1 条题解
-
0
自动搬运
来自洛谷,原作者为

liupan2010
AFO,再见。搬运于
2025-08-24 22:42:52,当前版本为作者最后更新于2023-03-30 13:21:16,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
前言:
我是蒟蒻,看不懂
vector和用map的高端写法,所以只能直接模拟字符串了。
代码片段:
这里是一些定义:
string newfile[1001];//新建的文件 bool iscreate[1001];//记录这个文件是否存在 int i,j,n,isok; string cmd,filename,anotherfilename;//分别为:输入的指令名,文件名与文件被改之后的名称
touch指令可以直接遍历,如果找到了同名文件,就不创建,否则就将其文件添加进去。代码如下:
isok=1; cin>>filename; for(j=1;j<=n;j++) if(newfile[j]==filename)//同名不能创造文件 { isok=0; break; } if(isok==1)//创建文件 { iscreate[i]=true; newfile[i]=filename; }
rm指令也能直接遍历,如果找到了这个文件,就将这个文件设为不存在。代码如下:
cin>>filename; for(j=1;j<=n;j++) if(newfile[j]==filename)//如果找到了同名文件 { iscreate[j]=false;//就将文件设为不存在 break; }
rename指令首先判断改后的文件名是否重名,如果没有就遍历文件。如果找到了被改名的文件就对其进行改名操作。代码如下:
cin>>filename>>anotherfilename; isok=1; for(j=1;j<=n;j++) if(newfile[j]==anotherfilename)//如果改后的名字重名了就进行标记 isok=0; if(isok!=0)//如果没有重名 { for(j=1;j<=n;j++) if(newfile[j]==filename)//如果存在此文件就改名 newfile[j]=anotherfilename; }
ls指令较为容易实现,直接枚举存在的文件名即可。代码如下:
for(j=1;j<=n;j++) if(iscreate[j]==true)//如果文件存在 cout<<newfile[j]<<endl;//就输出文件名
结语:
完整代码就不再放出了,可以看下通过记录。
- 1
信息
- ID
- 6320
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者