中南大学2018年ACM暑期集训前期训练题集(入门题) Q: Simple Line Editor
数据有毒,一个一个读字符是错,整个字符串读入,一次就A了。
总之,数据总是没有错的,还是对c++了解地不够深刻,还有,在比赛中,一定要有勇气重构代码
错误代码:
#include<iostream> #include<cstring> #include<cstdio> using namespace std; int main() { int T,t; scanf("%d",&T); char a[1024]; getchar(); while(T--){ t=0;a[0]=0; char c; while(scanf("%c",&c)!=EOF){ if(c==10){printf("%s\n",a);break;} if(c=='#'){t=max(0,--t);} else if(c=='@'){t=0;a[t]=0;} else { a[t]=c;a[++t]=0; } } } }
AC代码:
#include<cstdio> #include<algorithm> #include<iostream> #include<cstring> using namespace std; int main() { char a[1024]; char ans[1024]; int T; cin>>T; while(T--){ cin>>a; int n=strlen(a);int t=0; for(int i=0;i<n;i++){ if(a[i]=='#'){t=max(0,--t);} else if(a[i]=='@'){t=0;} else { ans[t++]=a[i]; } } ans[t]=0; cout<<ans<<endl; } }
如需转载,请注明出处
如有侵权,联系删除
2290713181@qq.com
如有侵权,联系删除
2290713181@qq.com