POJ3087Shuffle'm Up(map)

系统 1424 0

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

题意 : 我只能说,,英语不好是硬伤。。。这个题比较别扭啊,不知道真正题意是不是我所想的,我先把我A了的代码按照的题意的意思说一下,就是说两堆字符串每堆n个字符,从下边开始轮流取,其实输入之后就是从头开始取,先取第二个字符串的,放在最底下,再取第一个的,直到合成一个新的,然后再把下边n个取出来当成第一个字符串,上边n个当成第二个字符串,继续进行上述操作,直到新合成的字符串与题目中给出的目标字符串相同,若是合不成就输出-1,每次输出先输出是第几组数据,再输出需要几次可以达到目标字符串

思路 : 模拟?还行吧,挺简单的,用map函数标记一下就行,若是新合成的与之前某个合成的一样的,代表着这一组会陷入无限循环中,所以直接输出-1就行了

        #include<cstdio>
        
          

#include
        
        <iostream>
        
          

#include
        
        <map>
        
          

#include
        
        <cstring>


        
          using
        
        
          namespace
        
        
           std ;


        
        
          const
        
        
          int
        
         maxn = 
        
          1010
        
        
           ;


        
        
          int
        
        
           main()

{

    
        
        
          int
        
        
           n ;

    cin
        
        >>
        
          n ;

    
        
        
          char
        
        
           ch[maxn],sh[maxn],sch[maxn],neww[maxn] ;

    
        
        
          for
        
        (
        
          int
        
         i = 
        
          1
        
         ; i <= n ; i++
        
          )

    {

        map
        
        <
        
          string
        
        ,
        
          int
        
        >
        
           p ;

        
        
        
          int
        
         m ,cnt = 
        
          0
        
         ,sum = 
        
          0
        
        
          ;

        cin
        
        >>
        
          m ;

        cin
        
        >>ch>>sh>>
        
          sch ;

        cout
        
        <<i<<
        
          '
        
        
          '
        
        
          ;

        
        
        
          while
        
        (
        
          1
        
        
          )

        {

            cnt 
        
        = 
        
          0
        
        
           ;

            
        
        
          for
        
        (
        
          int
        
         j = 
        
          0
        
         ; j < m ; j++
        
          )

            {

                neww[cnt
        
        ++] =
        
           sh[j] ;

                neww[cnt
        
        ++] =
        
           ch[j] ;

            }

            neww[
        
        
          2
        
        *m] = 
        
          '
        
        
          \0
        
        
          '
        
        
          ;

            sum
        
        ++
        
           ;

            
        
        
          if
        
        (strcmp(neww,sch) == 
        
          0
        
        
          )

            {

                cout
        
        <<sum<<
        
          endl;

                
        
        
          break
        
        
           ;

            }

            
        
        
          if
        
        
          (p[neww])

            {

                cout
        
        <<
        
          "
        
        
          -1
        
        
          "
        
        <<
        
          endl;

                
        
        
          break
        
        
           ;

            }

            p[neww]
        
        ++
        
           ;

            strncpy(ch,neww,m);

            ch[m]
        
        =
        
          '
        
        
          \0
        
        
          '
        
        
          ;

            strcpy(sh,neww
        
        +
        
          m);

        }

    }

}
        
      
View Code

 

POJ3087Shuffle'm Up(map)


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论