POJ-3087Shuffle'm Up
程序员文章站
2022-05-08 23:49:56
...
题目传送门:Shuffle’m Up
分析:洗扑克,模拟题。开一个数组将每次的结果储存起来,再与题目要求的进行比较,此处我用一个循环进行模拟,我规定了1000次,假设在1000次内都模拟不出结果,即当做无法达到。
#include<iostream>
#include<cstring>
using namespace std;
char s1[105];
char s2[105];
char ns12[300]; //用来存变换后的结果的数组
char s12[300];
int time=1000;
int main(){
int k;
cin>>k;
int test=1;
while(k--){
int c;
cin>>c;
for(int i=0;i<c;i++)
cin>>s1[i];
for(int i=0;i<c;i++)
cin>>s2[i];
cin>>s12;
int t=1;
int res=0;
while(t<=time){
int num=0;
for(int i=0;i<c;i++){
ns12[num++]=s2[i];
ns12[num++]=s1[i];
}
ns12[2*c]='\0';
res++;
if(strcmp(ns12,s12)==0){
cout<<test<<" "<<res<<endl;
break;
}
for(int i=0;i<c;i++)
s1[i]=ns12[i];
for(int i=c;i<2*c;i++)
s2[i-c]=ns12[i];
t++;
}
if(t>time) cout<<test<<" "<<"-1"<<endl;
test++;
}
}