以前做过原题,贴出链接(用的是map)。
下面是新代码:
#include <iostream>
#include <string>
using namespace std;
string l , r;
string tar , cur;
string book;
int N;
int ans;
void sitimulate(){
cur.clear();
for(int i=1;i<=2*N;i++){
if(i%2){
cur+=r[i/2];
}
else{
cur+=l[(i-1)/2];
}
}
l.clear();
r.clear();
for(string::iterator i = cur.begin() ; i != cur.end() ; i++){
if(i - cur.begin() < N)
l += *i;
else
r += *i;
}
ans++;
return ;
}
void dealwithit(){
sitimulate();
book = cur;
if(cur == tar)
return ;
while(true){
sitimulate();
if(cur == tar)
return ;
if(cur == book){
ans = -1;
return ;
}
}
}
int main(){
int T;cin>>T;
for(int t=1;t<=T;t++){
ans = 0;
cin>>N;
cin>>l>>r>>tar;
dealwithit();
cout<<t<<' '<<ans<<endl;
}
return 0;
}