考查:好像不是BFS 提交:1次WA 收获:最后判别不可能是经过N次洗牌后s1和s2和开始相同 AC_CODE: #include <stdio.h> #include <string> char s1[110],s2[110],temp[210],dest[210],b[110],c[110]; int k,n,step; void bfs(int num) { step=1; strcpy(b,s1); strcpy(c,s2); while(1) { for(int i=0;i<2*n;i++) { if(i%2==0) temp[i]=s2[i/2]; else temp[i]=s1[i/2]; } if(strcmp(temp,dest)==0) { printf("%d %d/n",num,step); return; } strncpy(s1,temp,n); strncpy(s2,temp+n,n); if(strcmp(s1,b)==0&&strcmp(s2,c)==0) { printf("%d %d/n",num,-1); return ; } step++; } } int main() { scanf("%d",&k); for(int i=0;i<k;i++) { scanf("%d",&n); getchar(); for(int j=0;j<n;j++) scanf("%c",&s1[j]); getchar(); for(int j=0;j<n;j++) scanf("%c",&s2[j]); getchar(); for(int j=0;j<2*n;j++) scanf("%c",&dest[j]); getchar(); bfs(i+1); } return 0; } 11309~