• 如果您想对本站表示支持,请随手点击一下广告即可~
  • 本站致力于提供原创、优秀的技术文章~
  • 有任何疑问或建议 均可以在站点右侧栏处 通过各种方式联系站长哦~
  • POJ3087 – Shuffle’m Up

    ACM-POJ EXP 126阅读 0评论

    全解题报告索引目录 -> 【北大ACM – POJ试题分类


    题目大意:

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

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

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

    解题思路:

    很浅白的模拟题= = 不懂为什么别人要把它归类到广搜。。。所以我又重新分类了。。。

    直接模拟就可以了,关键在于状态记录,然后判重

    若s1和s2在洗牌后的状态,是前面洗牌时已经出现过的一个状态,且这个状态不是预想的状态S12,就说明无论怎样再洗牌都不可能达到S12了,因为这个洗牌操作已经陷入了一个“环”

    如果状态没有重复过,则一直模拟洗牌,直至s12出现

    记录状态可以用map<string,bool>vist

    Map的缺省值为0

    知道这个就不难了

    转载请注明:EXP 技术分享博客 » POJ3087 – Shuffle’m Up

    喜欢 (0) 分享 (0)
    发表我的评论
    取消评论

    表情

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址