PAT (Advanced Level) 1112. Stucked Keyboard (20)
Posted Fighting Heart
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT (Advanced Level) 1112. Stucked Keyboard (20)相关的知识,希望对你有一定的参考价值。
找出一定没问题的字符(即一连串的额字符x个数能被k整除的),剩下的字符都是可能有问题的。
#include<cstdio> #include<cstring> #include<cmath> #include<vector> #include<map> #include<queue> #include<stack> #include<algorithm> using namespace std; int k; char s[2000]; int flag[2000]; vector<int>ans; char out[2000]; int sz; int dd[2000]; int main() { memset(dd,0,sizeof dd); memset(flag,0,sizeof flag); scanf("%d",&k); scanf("%s",s); int len=strlen(s); int L=0; while(1) { int R; for(int i=L; s[i]; i++) { if(s[i]==s[L]) R=i; else break; } if((R-L+1)%k!=0) flag[s[L]]=1;//一定不破 L=R+1; if(L>=len) break; } memset(out,0,sizeof out); sz=0; int p=0; while(1) { if(p>=len) break; if(flag[s[p]]==1) { out[sz++]=s[p]; p++; } else { out[sz++]=s[p]; ans.push_back(s[p]); p=p+k; } } for(int i=0; i<ans.size(); i++) if(dd[ans[i]]==0) { dd[ans[i]]=1; printf("%c",ans[i]); } printf("\n%s\n",out); return 0; }
以上是关于PAT (Advanced Level) 1112. Stucked Keyboard (20)的主要内容,如果未能解决你的问题,请参考以下文章