感觉这道题可能有例外,比如都空的情况....,在string 类型里, 初始化时 用s21 += s12 会WA 然后 用s21 = s12就AC了....还有就是为什么要在刚开始给s21赋值呢..我是因为不初始化,就算s21[i]赋值了,,输出s21 仍然空....所以就试着赋了下值...就有结果了......
#include<iostream>
using namespace std;
int main()
{
string s1, s2, s12, s21="";
int n, T;
cin >> T;
for(int k=1; k<=T; k++){
cin >> n;
cin >> s1 >> s2 >> s12;
string tmp = s1;
int step = 0;
s21 = s12;
while(1){
for(int i=0; i<n; i++){
s21[i*2] = s2[i];
s21[i*2+1] = s1[i]; //cout << s21 << endl;
// cout<<2*i<<s21[i*2]<< 2*i+1 << s21[i*2+1];
}
step++;
if(!s12.compare(s21)){
cout<< k << " " << step << endl;
break;
}
else if(!tmp.compare(s21.substr(0, n))){
cout<< k << " " << -1 << endl;
break;
}
else {
for(int i=0; i<n; i++){
s1[i] = s21[i];
s2[i] = s21[n+i];
}
}
}
}
return 0;
}