密码(模拟+STL—vector的使用)
https://www.nowcoder.com/acm/contest/90/K
中文题意一看就懂!(主要是不知道怎么说题意得!)
分析:模拟一下它的过程,吧结果放在vector数组中就OK了得!
我没使用数组的原因在于n为1e5如果开二维数组开不起!
用一维数组也是可以做的,只是比较麻烦一点而已!
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include<bits/stdc++.h> using namespace std; const int maxn=1e5+10; vector<char>v[maxn]; char s[maxn]; int n; int main() { int t; scanf("%d",&t); while(t--) { scanf("%d",&n); scanf("%s",s); int len=strlen(s); int flag=1; if(n<2) { printf("%s\n",s); continue; } for(int i=1;i<=n;i++) v[i].clear(); int i=0; while(i<len)///n>=3 { int j=1; while(flag) { v[j].push_back(s[i]); i++;j++; if(j>n||i>=len) break; } j=n-1; while(!flag&&j>1) { v[j].push_back(s[i]); i++;j--; if(j<=1||i>=len) break; } flag^=1; } for(int k=1;k<=n;k++) { int ss=v[k].size(); for(int j=0;j<ss;j++) printf("%c",v[k][j]); } puts(""); } return 0; }
之所以把这道题记下来,不仅仅是因为没做一道题就要写博客,更重要的是我尽然WA了几次,忘记清除vector数组了!