</pre><p>简单的模拟题目 </p><p>一开始理解题目错了,把 拆分后的s1,s2弄反了,答案错误。</p><p>不过代码的速度太慢了,32ms</p><p>大神都是0ms的。T~T</p><pre name="code" class="cpp">#include <iostream>
#include <memory>
#include <string>
using namespace std;
int n,c,time,i;
string no;
string s1,s2,s;
int shuffle()
{
int i,j;
string t1=s1,t2=s2;
do
{
string temp;
for(i=0;i<c;i++) //合并
temp=temp+t2[i]+t1[i];
for(i=0;i<c;i++) //拆分
t1[i]=temp[i];
for(j=0;j<c;i++,j++)
t2[j]=temp[i];
time++;
// cout<<t1<<" "<<t2<<" "<<temp<<endl;
if(temp==s)
return time;
}while(t1!=s1&&s2!=t2);
return -1;
}
int main()
{
cin>>n;
for(i=1;i<=n;i++)
{
time=0;
cin>>c;
cin>>s1;
cin>>s2;
cin>>s;
cout<<i<<" "<<shuffle()<<endl;
}
}
poj 3087
最新推荐文章于 2021-03-09 00:00:29 发布