http://acm.hust.edu.cn/vjudge/contest/121377#problem/G
根据题意模拟即可
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include<stdio.h> #include<string.h> #include<math.h> #include<queue> using namespace std; #define maxn 300 char a[maxn*maxn], b[maxn*maxn], s1[maxn], s2[maxn], s[maxn*maxn]; int solve(int n, int step) { int j=0; for(int i=0; i<n; i++) { a[j++] = s2[i]; a[j++] = s1[i]; } a[j]='\0'; if(!strcmp(a, s)) return step; if(step == 1) strcpy(b, a); if(step!=1 && !strcmp(b, a)) return -1; strncpy(s1, a, n); strncpy(s2, a+n, n); return solve(n, step+1); } int main() { int T, t=1, n; scanf("%d", &T); while(T --) { scanf("%d %s %s %s", &n, s1, s2, s); int ans = solve(n, 1); printf("%d %d\n",t++, ans); } return 0; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步