zoukankan      html  css  js  c++  java
  • POJ 3087 Shuffle'm Up 模拟,看着不像搜索啊

    题意:给定s1,s1两副扑克,顺序从下到上。依次将s2,s1的扑克一张一张混合。例如s1,ABC; s2,DEF. 则第一次混合后为DAEBFC. 然后令前半段为s1, 后半段为s2. 如果可以变换成所给出的字符串,输出变换次数即可;否则,输出-1。

    这题数据太水了,我是这样判断无法变换成题目所给出的字符串的:将每一次变换后的字符串存进数组,每次变换后由于之前变换后的字符串相比较,如果有相同的,就说明会无限循环下去。这样一来,循环次数会增加很多,然而0ms过了。。。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    
    char ss[1000][200];
    int main()
    {
        //freopen("in.txt","r",stdin);
        int n;
        scanf("%d",&n);
        int t=1;
        while(n--)
        {
            int m;
            bool flag=false;
            char s1[200],s2[200],s[400];
            memset(s1,0,sizeof(s1));
            memset(s2,0,sizeof(s2));
            memset(s,0,sizeof(s));
            memset(ss,0,sizeof(ss));
            scanf("%d%s%s%s",&m,s1,s2,s);
            for(int i=0;; i++)
            {
                for(int j=0; j<m; j++)
                    ss[i][2*j]=s2[j];
                for(int j=0; j<m; j++)
                    ss[i][2*j+1]=s1[j];
                if(strcmp(s,ss[i])==0)
                {
                    printf("%d %d
    ",t,i+1);
                    break;
                }
                else
                {
                    for(int j=0; j<i; j++)
                        if(strcmp(ss[i],ss[j])==0)
                        {
                            printf("%d -1
    ",t);
                            flag=true;
                            break;
                        }
                    if(flag)
                        break;
                }
                for(int j=0; j<m; j++)
                {
                    s1[j]=ss[i][j];
                    s2[j]=ss[i][j+m];
                }
            }
            t++;
        }
        return 0;
    }
  • 相关阅读:
    HDOJ 1846 Brave Game
    并查集模板
    HDU 2102 A计划
    POJ 1426 Find The Multiple
    POJ 3278 Catch That Cow
    POJ 1321 棋盘问题
    CF 999 C.Alphabetic Removals
    CF 999 B. Reversing Encryption
    string的基础用法
    51nod 1267 4个数和为0
  • 原文地址:https://www.cnblogs.com/pach/p/5780162.html
Copyright © 2011-2022 走看看