首页 > 其他 > 详细

Shuffle'm Up

时间:2020-08-11 10:20:53      阅读:42      评论:0      收藏:0      [点我收藏+]

原题链接

题解

这个题目貌似是个模拟题,直接模拟就是了

代码如下

#include <iostream>
#include <cstring>
#include <algorithm>
#include <set>

using namespace std;
set<string> s;

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

        int res = 0; bool flag = false;
        while(!s.count(t)){
            s.insert(t); t = "";
            for(int i = 0; i < n; ++ i) t += s2[i], t += s1[i];
            res ++;
            if(t == s12) {flag = true; break;}
            s1 = t.substr(0, n);
            s2 = t.substr(n, n);//题目中是说最高的C个,不是高的C个的顶部开始,不需要反转
        }
        cout << k << ‘ ‘;
        if(!flag) cout << -1 << ‘\n‘;
        else cout << res << ‘\n‘;
        s.clear();
    }
    return 0;
}

Shuffle'm Up

原文:https://www.cnblogs.com/Lngstart/p/13473681.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!