• POJ3087 Shuffle'm Up 简单模拟


    题意:就是给你两副扑克,然后一张盖一张洗牌,不断重复这个过程,看能不能达到目标的扑克顺序

    分析:然后就模拟下,-1的情况就是有循环节

    #include<cstdio>
    #include<algorithm>
    #include<iostream>
    #include<cstring>
    #include<cmath>
    #include<map>
    #include<queue>
    #include<stdlib.h>
    #include<string>
    #include<set>
    using namespace std;
    typedef long long LL;
    const int maxn=1005;
    const int INF=0x3f3f3f3f;
    set<string>s;
    char a[maxn],b[maxn],now[maxn*2];
    string res;
    int ans,c,T;
    void dfs(int pos)
    {
        int x=1,y=1;
        for(int i=1; i<=c*2; ++i)
        {
            if(i%2)now[i]=b[y++];
            else now[i]=a[x++];
        }
        now[c*2+1]='';
        string temp=now+1;
        if(temp==res)
        {
            ans=pos;
            return;
        }
        if(s.find(temp)==s.end())
            s.insert(temp);
        else return;
        for(int i=1; i<=c; ++i)
        {
            a[i]=now[i];
            b[i]=now[i+c];
        }
        dfs(pos+1);
    }
    int main()
    {
        scanf("%d",&T);
        for(int i=1; i<=T; ++i)
        {
            s.clear();
            scanf("%d%s%s",&c,a+1,b+1);
            cin>>res;
            ans=INF;
            dfs(1);
            printf("%d ",i);
            if(ans==INF)printf("-1
    ");
            else printf("%d
    ",ans);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    DNS服务器配置
    动态网站技术CGI
    SED单行脚本快速参考(Unix 流编辑器)
    xen 安静的角落
    IP命令
    oracle 监听文件 说明
    LRU ,LRUW,CKPT-Q
    重建控制文件ORA-12720
    历史备份控制文件恢复数据库
    增量检查点和完全检查点
  • 原文地址:https://www.cnblogs.com/shuguangzw/p/5165905.html
Copyright © 2020-2023  润新知