简单模拟 #include<stdio.h> #include<string.h> char ans[205][205]; char s1[105],s2[105],target[205]; int len; int statics() { int i,j; int times=0; for(i=0;;i++) { int k=0; for(j=0;j<len;j++) { ans[i][k++]=s2[j]; ans[i][k++]=s1[j]; } ans[i][k]='/0'; if(strcmp(ans[i],target)==0) return i+1; memcpy(s1,ans[i],sizeof(char)*len); s1[len]='/0'; memcpy(s2,ans[i]+len,sizeof(char)*len); s2[len]='/0'; for(j=0;j<i;j++) if(strcmp(ans[j],ans[i])==0) return -1; } return 0; } int main() { /freopen("out.txt","w",stdout);// int cas,num=1; scanf("%d",&cas); while(cas--) { scanf("%d",&len); scanf("%s%s%s",s1,s2,target); printf("%d %d/n",num++,statics()); } return 0; }