POJ - 3087 Shuffle'm Up 暴力模拟

#include <iostream>
#include<cstdio>
#include<map>
using namespace std;
int main()
{
    int l;
    string S1,S2,S,s;
    int T;
    cin>>T;
    for(int t=1; t<=T; t++)
    {
        cin>>l>>S1>>S2>>S;
        int ans=0;
        s=S1+S2;
        map<string ,bool>mp;
        while (true)
        {
            mp[s]=true;
            for(int i=0;i<l;i++)
            {
                s[2*i]=S2[i];
                s[2*i+1]=S1[i];
            }
            ans++;
            if(s==S||mp[s]==true)break;
            for(int i=0;i<l;i++)
            {
                S1[i]=s[i];
                S2[i]=s[l+i];
            }
        }
        if(mp[s]==true)printf("%d %d\n",t,-1);
        else printf("%d %d\n",t,ans);
    }
    return 0;
}
发布了19 篇原创文章 · 获赞 19 · 访问量 681

猜你喜欢

转载自blog.csdn.net/qq_44086097/article/details/104148730