专栏文章

P13499 70分求改

算法·理论参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miop8uml
此快照首次捕获于
2025/12/02 22:54
3 个月前
此快照最后确认于
2025/12/02 22:54
3 个月前
查看原文

思路:

m [500005] : 储存文件名
n [500005] : 储存文件内容
当执行 ls > [string] 指令时 :
    1. 检查 m 数组内有没有 [string] ,
      有 : 清空对应的 n 数组内容
      无 : 创建文件,top++
    1. 遍历 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 条评论,欢迎与作者交流。

正在加载评论...