POJ1753(Flip Game)

题目连接点这里题目大意有一个4x4的网格上面有16个按钮。按钮只有黑白两种颜色。按其中一个按钮本身和其上下左右的按钮都会改变颜色。给出初始棋牌的状态,输出最少要按多少次按钮才可以让棋牌变为一种颜色。解题思路 思考阶段一:找规律,这种开关类题目大多数都是有某种规律(也许),然而看了10分钟啥也没发现,放弃。 思考阶段二:暴力枚举,将所有情况枚举出来,选择点击次数最少的情况就好。(可能...
摘要由CSDN通过智能技术生成

题目连接点这里

  • 题目大意

有一个4x4的网格上面有16个按钮。按钮只有黑白两种颜色。按其中一个按钮本身和其上下左右的按钮都会改变颜色。给出初始棋牌的状态,输出最少要按多少次按钮才可以让棋牌变为一种颜色。

  • 解题思路
    • 思考阶段一:找规律,这种开关类题目大多数都是有某种规律(也许),然而看了10分钟啥也没发现,放弃。
    • 思考阶段二:暴力枚举,将所有情况枚举出来,选择点击次数最少的情况就好。(可能会超时)
      • 如何枚举:棋盘大小已经给定4x4,一共有16个按钮,针对给出棋盘的初始状态,最少的点击次数为0(初始给出的棋盘都一个颜色)。最多为16(因为有16个按钮)。也就是说有可能点击1、2、3、4.....16个按钮。然而1个按钮有16种组合,2个按钮有C16~2种组合...16个按钮有C16~16种组合。所以这个问题就简化成了一个组合问题。从1开始循环到16分别求出所有可能来验证是否满足棋盘颜色统一的规律即可。
      • 必要考虑:1.如何翻转一个按钮 2.如何判断棋盘
    • 思考阶段三:暴力枚举+位压缩+打表
      • 如何压缩:在枚举的基础上我们会考虑用一个vector或者int数组或者bool数组去存一个数组是否太占用空间了,因为棋盘每个按钮的状态只有2种状态。简单来说就是0和1两种。于是乎我们就会想到用位压缩法。十六个按钮对应十六个二进制数,也对应一个二进制数值。用一个int或者short就可以存储棋盘全部按钮的状态。16个
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值