• poj 3087 直接模拟


    题意:意思就是,s1,和s2两堆牌,然后先s2一张再s1,最后会出现一个s12序列,例如s1 AHAH
    S2 HAHA 然后s12为HAAHHAAH,然后前面一部分给s1,后面一部分给s2,然后再重复操作。最后看能否达到目标序列。
    思路:大牛的做法是经过了一些操作后看s1是否等于刚开始输入的序列,若等于,则不能达到。
    然后这个代码要注意的一点是初始化,,,如果s12不初始化的话,很有可能会WA;

     1 #include <iostream>
     2 #include <cstring>
     3 #include <cstdio>
     4 using namespace std;
     5 #define N 1005
     6 
     7 char s1[N],s2[N],temp[N],d[N],mark[N];//d装目的字符组,temp装临时字符组,mark装标记字符组 
     8 int t,c,num,ans;//num为答案序号 
     9 
    10 void test()
    11 {
    12     printf("s1[%s]s2[%s]d[%s]mark[%s]temp[%s]
    ",s1,s2,d,mark,temp);
    13     getchar();
    14 }
    15 
    16 void solve()
    17 {
    18     int i,j;
    19     
    20     ans=0;
    21     strcpy(mark,s1);
    22     memset(temp,0,sizeof(temp));
    23     while (strcmp(temp,d)!=0)//一次洗牌 
    24     {
    25         for (i=0,j=0;i<2*c;i+=2,j++)//注意条件是i<2*c!!! 
    26         {
    27             temp[i]=s2[j];
    28             temp[i+1]=s1[j];
    29         }
    30 //        test();
    31         ans++;
    32         memset(s1,0,sizeof(s1));
    33         memset(s2,0,sizeof(s2));
    34         for (i=0;i<c;i++)
    35         {
    36             s1[i]=temp[i];
    37         }
    38         for (j=0;i<2*c;i++,j++)
    39         {
    40             s2[j]=temp[i];
    41         }
    42         if (strcmp(s1,mark)==0)//判断是否循环 
    43         {
    44             printf("%d -1
    ",num++);
    45             return;
    46         }
    47         if (strcmp(temp,d)==0)
    48         {
    49             printf("%d %d
    ",num++,ans);
    50             return;
    51         }
    52     }
    53 }
    54 
    55 int main()
    56 {
    57     scanf("%d",&t);
    58     num=1;
    59     while (t--)
    60     {
    61         scanf("%d",&c);
    62         getchar();
    63         scanf("%s",s1); 
    64         getchar();
    65         scanf("%s",s2);
    66         getchar();
    67         scanf("%s",d);
    68         solve();
    69     }
    70     
    71     return 0;
    72 } 
  • 相关阅读:
    C#心得与经验(二)
    C#心得与经验(一)
    与C#的第一次~
    2014应届生面试经验详谈。
    Block基本用法
    OC中得那些“点”
    PCH文件的使用
    UIScrollView的subViews使用小注意
    分享一下本人录制图像处理与OpenCV学习视频
    OpenCV 3.2正式发布啦
  • 原文地址:https://www.cnblogs.com/hemeiwolong/p/9324505.html
Copyright © 2020-2023  润新知