为何题解代码可以AC:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,p=1;
string opt,t,tt,z[1001];
bool f=0;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>opt;
f=0;
if(opt=="touch")
{
cin>>t;
for(int i=1;i<=p;i++)
{
if(z[i]==t)
{
f=1;
break;
}
}
if(f==0)
z[p]=t,p++;
}
else if(opt=="rm")
{
cin>>t;
for(int i=1;i<=p;i++)
{
if(z[i]==t)
{
z[i]="";
break;
}
}
}
else if(opt=="ls")
{
for(int i=1;i<=p;i++)
{
if(z[i]!="")
cout<<z[i]<<endl;
}
}
else if(opt=="rename")
{
cin>>tt>>t;
for(int i=1;i<=p;i++)
{
if(z[i]==tt)
{
z[i]=t;
break;
}
}
}
}
return 0;
}
而我的只可以的40!!!!(感觉没有区别)
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n,ans=1,zj=0;
string a,b,c,d[1000];
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a;
zj=0;
if(a=="touch")
{
cin>>b;
for(int i=1;i<=ans;i++)
{
if(d[i]==b)
{
zj=1;
break;
}
}
if(zj!=1)
{
d[ans]=b;
ans++;
}
}
if(a=="rm")
{
cin>>b;
for(int i=1;i<=ans;i++)
{
if(d[i]==b)
{
d[i]="";
break;
}
}
}
if(a=="ls")
{
for(int i=1;i<=ans;i++)
{
if(d[i]!="")
cout<<d[i]<<endl;
}
}
if(a=="rename")
{
cin>>b>>c;
for(int i=1;i<=ans;i++)
{
if(d[i]==c)
{
d[i]==b;
break;
}
}
}
}
return 0;
}