zoukankan      html  css  js  c++  java
  • poj 3087 Shuffle'm Up ( map 模拟 )

    题目:http://poj.org/problem?id=3087

    题意:已知两堆牌s1和s2的初始状态, 其牌数均为c,按给定规则能将他们相互交叉组合成一堆牌s12,再将s12的最底下的c块牌归为s1,最顶的c块牌归为s2,依此循环下去。

    现在输入s1和s2的初始状态 以及 预想的最终状态s12

    问s1 s2经过多少次洗牌之后,最终能达到状态s12,若永远不可能相同,则输出"-1"。

     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<cstdlib>
     5 #include<stack>
     6 #include<queue>
     7 #include<iomanip>
     8 #include<cmath>
     9 #include<map>
    10 #include<vector>
    11 #include<algorithm>
    12 using namespace std;
    13 
    14 int main()
    15 {
    16     int n,i,team,x=1,cnt,sum;
    17     char a[250],b[250],c[450],t[450];
    18     cin>>team;
    19     while(team--)
    20     {
    21         cin>>n;
    22         map<string,int>mp;
    23         map<string,int>::iterator iter;
    24         cin>>a>>b>>c;
    25         mp[c]=2;
    26         sum=0;
    27         printf("%d ",x++);
    28         while(1)
    29         {
    30             sum++;
    31             cnt=0;
    32             for(i=0; i<n; i++)
    33             {
    34                 t[cnt++]=b[i];
    35                 t[cnt++]=a[i];
    36             }
    37             t[cnt]='';
    38             if(mp[t]==2)
    39             {
    40                 cout<<sum<<endl;
    41                 break;
    42             }
    43             if(mp[t]==1)
    44             {
    45                 cout<<"-1"<<endl;
    46                 break;
    47             }
    48             mp[t]=1;
    49             strncpy(a,t,n);
    50             a[n]='';
    51             strcpy(b,t+n);
    52             b[n]='';
    53         }
    54     }
    55     return 0;
    56 }
  • 相关阅读:
    hibernate 批量增加 修改 删除
    Java WebService入门实例
    linux中Jetty的安装和配置
    Jetty与tomcat的比较
    在云上搭建大规模实时数据流处理系统
    大型开源日志系统比较
    JMX整理
    Gradle笔记——Gradle的简介与安装
    Groovy入门教程
    Apache Maven 入门篇 ( 上 )
  • 原文地址:https://www.cnblogs.com/bfshm/p/3284282.html
Copyright © 2011-2022 走看看