专栏文章
P13499 70分求改
算法·理论参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miop8uml
- 此快照首次捕获于
- 2025/12/02 22:54 3 个月前
- 此快照最后确认于
- 2025/12/02 22:54 3 个月前
思路:
m [500005] : 储存文件名
n [500005] : 储存文件内容
n [500005] : 储存文件内容
当执行 ls > [string] 指令时 :
-
- 检查 m 数组内有没有 [string] ,
有 : 清空对应的 n 数组内容
无 : 创建文件,top++
- 检查 m 数组内有没有 [string] ,
-
- 遍历 m 数组 , 将文件名储存并赋值到对应的 m 数组项
70分 代码:
CPP#include<bits/stdc++.h>
using namespace std;
string n[500005];int m[500005],top=1;
//m数组是文件名数组,n数组是文件内容数组
void ls(int s){
//1.检查 m 数组内有没有 s
int f=1,wz;
for(int i=1;i<top;i++){if(m[i]==s){n[i]="";wz=i;f=0;}}
if(f){wz=top;m[top]=s;n[top]="";top++;}//新建
//2.遍历 m 数组,将文件名储存并赋值到对应的 m 数组项
string x="";//文件内容
for(int i=1;i<top;i++){
//转换int为string
int zh=m[i];string nx="";
while(zh){nx+=((zh%10)+'0');zh/=10;}x+=nx;
if(i!=top-1){x+=' ';}
}
n[wz]=x;//赋值
}
int main(){
int a,b;scanf("%d %d",&a,&b);
for(int i=1;i<=a;i++){int s;cin>>s;ls(s);}
int tong[500005];//用一个桶来储存长度
for(int i=1;i<top;i++){tong[m[i]]=n[i].length();}
for(int i=1;i<top;i++){cout<<tong[i]<<' ';}
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...