密码(模拟+STL—vector的使用)

https://www.nowcoder.com/acm/contest/90/K

中文题意一看就懂!(主要是不知道怎么说题意得!)

分析:模拟一下它的过程,吧结果放在vector数组中就OK了得!

我没使用数组的原因在于n为1e5如果开二维数组开不起!

用一维数组也是可以做的,只是比较麻烦一点而已!

#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数组了!

posted @ 2018-03-24 21:05  孟加拉国  阅读(164)  评论(0编辑  收藏  举报