社区讨论
70分求调
P13499「Cfz Round 6」Umiyuri Kaiteitan参与者 3已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @mdok1q8e
- 此快照首次捕获于
- 2025/07/29 21:10 7 个月前
- 此快照最后确认于
- 2025/11/04 03:30 4 个月前
思路:
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]<<' ';}
}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...