• POJ


    题意:将两个字符串模拟洗牌的操作合并问是否能得打答案,以及中间经过的次数,如果不能则输出-1

    思路:这是一道模拟题,所以只需要写一个模拟操作,不断循环即可。同时还要判断循环结束条件(递归结束条件),如果自己手写一个例子的话就会发现其在不超过2*n(n为长度)次数就会洗回来

    完整代码:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <string>
    using namespace std;
    const int maxn = 1e3;
    string s1,s2,s12;
    int n;
    void dfs(int step, string s){
        if(!s.compare(s12)){
            cout<<step<<endl;
            return ;
        }else if(step>(2*n)){
            cout<<-1<<endl;
            return ;
        }
        s.clear();
        for(int i=0;i<n;i++){
            s.push_back(s2[i]);
            s.push_back(s1[i]);
        }
        s1.assign(s,0,n);
        s2.assign(s,n,n);
        dfs(++step,s);
    }
    int main(){
        int T;
        cin>>T;
        int cnt =0;
        while(T--){
            cin>>n;
            cin>>s1>>s2>>s12;
            cout<<++cnt<<" ";
            dfs(0,s2);
        }
        return 0;
    }
  • 相关阅读:
    jQuery 从无到有.一天完成.
    JavaScript从无到有(一天完成)
    HTML(第一篇)
    前端认识
    三元表达式,列表推导是,字典生成式
    ORM之youku项目小练习(上)
    高逼格壁纸
    pymysql 基操全套
    怎么学好编程?
    mysql 事务
  • 原文地址:https://www.cnblogs.com/Tianwell/p/11259069.html
Copyright © 2020-2023  润新知