当前位置: 代码迷 >> 综合 >> POJ - 3087 Shuffle‘m Up
  详细解决方案

POJ - 3087 Shuffle‘m Up

热度:98   发布时间:2023-11-25 07:22:17.0

POJ - 3087 Shuffle’m Up

#include<iostream>
#include<set>
using namespace std;
string suff(string a, string b) //“洗牌”函数
{
    string ret;for (int i = 0; i < (int)a.size(); i++) ret += b[i], ret += a[i];return ret;
}
int main()
{
    int T;cin >> T;for (int _ = 1; _ <= T; _++){
    int n;cin >> n;string s1, s2, s3;cin >> s1 >> s2 >> s3;int ans = 1;//洗牌至少一次(第一次)set<string> mp;//记录字符串是否存在过for (string t = suff(s1, s2); ; t = suff(t.substr(0, n), t.substr(n, n)), ans++){
    if (mp.find(t) != mp.end()){
    ans = -1;    //形成闭环依然没有遇到答案break;}else if (t == s3) break; //遇到答案else mp.insert(t);}cout << _ << ' ' << ans << endl;}return 0;
}
  相关解决方案