Shuffle'm Up POJ - 3087

感觉这道题可能有例外,比如都空的情况....,在string 类型里, 初始化时 用s21 += s12 会WA  然后  用s21 = s12就AC了....还有就是为什么要在刚开始给s21赋值呢..我是因为不初始化,就算s21[i]赋值了,,输出s21 仍然空....所以就试着赋了下值...就有结果了......

#include<iostream>

using namespace std;

int main()
{
	string s1, s2, s12, s21="";
	
	int n, T;
	cin >> T;
	for(int k=1; k<=T; k++){
	cin >> n;

	cin >> s1 >> s2 >> s12;
	string tmp = s1;
	int step = 0;
	s21 = s12;
	while(1){
		
		for(int i=0; i<n; i++){
			s21[i*2] = s2[i];
			s21[i*2+1] = s1[i];	//cout << s21 << endl;
//			cout<<2*i<<s21[i*2]<< 2*i+1 << s21[i*2+1];
		}
	
		step++;
		if(!s12.compare(s21)){
			cout<< k << " " << step << endl;
			break;
		}
		else if(!tmp.compare(s21.substr(0, n))){
			cout<< k << " " << -1 << endl;
			break;
		}
		else {
			for(int i=0; i<n; i++){
				s1[i] = s21[i];
				s2[i] = s21[n+i];
			}
		
		}
	}

}
	return 0;
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值