POJ-3087Shuffle'm Up

题目传送门: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++;
	}	
}

猜你喜欢

转载自blog.csdn.net/weixin_43556295/article/details/86652963