POJ - 3087 Shuffle'm Up (简单递归)
Posted tianwell
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ - 3087 Shuffle'm Up (简单递归)相关的知识,希望对你有一定的参考价值。
题意:将两个字符串模拟洗牌的操作合并问是否能得打答案,以及中间经过的次数,如果不能则输出-1
思路:这是一道模拟题,所以只需要写一个模拟操作,不断循环即可。同时还要判断循环结束条件(递归结束条件),如果自己手写一个例子的话就会发现其在不超过2*n(n为长度)次数就会洗回来
完整代码:
#include <iostream> #include <cstdio> #include <cstring> #include <string> using namespace std; const int maxn = 1e3; string s1,s2,s12; int n; void dfs(int step, string s) if(!s.compare(s12)) cout<<step<<endl; return ; else if(step>(2*n)) cout<<-1<<endl; return ; s.clear(); for(int i=0;i<n;i++) s.push_back(s2[i]); s.push_back(s1[i]); s1.assign(s,0,n); s2.assign(s,n,n); dfs(++step,s); int main() int T; cin>>T; int cnt =0; while(T--) cin>>n; cin>>s1>>s2>>s12; cout<<++cnt<<" "; dfs(0,s2); return 0;
以上是关于POJ - 3087 Shuffle'm Up (简单递归)的主要内容,如果未能解决你的问题,请参考以下文章