POJ 3807 Shuffle'm Up
解题思路:普通模拟题
NULL
#include <iostream>
#include <string>
#include <set>
using namespace std;
int main()
{
set<string>shuf;
char s1[101],s2[101];
string aim,str;
int i,j,n,m,iter;
bool IsFind;
cin >> n;
for (i=1;i<=n;i++)
{
iter = IsFind = 0;
cin>>m>>s1>>s2>>aim;str.resize(2*m);
while (1)
{
iter++;
for(j=0;j<m;j++)str[j*2]=s2[j],str[j*2+1]=s1[j];
for(j=0;j<m;j++)s1[j]=str[j],s2[j]=str[j+m];
if(str == aim){IsFind=true;break;}
if (shuf.find(str)==shuf.end())
shuf.insert(str);
else break;
}
shuf.clear();
cout <<i<<" "<<(IsFind ? iter : -1)<<endl;;
}
return 0;
}