POJ1753题解(枚举)

这篇博客介绍了POJ1753题目,该题目涉及一个4x4的棋盘,目标是通过翻转棋子使所有棋子变为同一颜色。博主提出,棋子最后的状态只与初始状态和翻转次数的奇偶性有关,因此可以通过枚举翻转次数来判断是否能达成目标。他们将问题简化为最多16次操作,每次操作影响一个棋子,然后遍历所有可能的翻转组合(2^16种),并判断这些状态是否满足条件。文章提供了具体的实现思路和AC代码。
摘要由CSDN通过智能技术生成

 

Sample Input

bwwb
bbwb
bwwb
bwww
Sample Output

4

 

题意:给一个4x4的棋盘,棋盘上有16个棋子,棋子正反两面分别为黑色和白色,给出初始状态(棋子可能是正面可能是反面),可以操作任意多次,每次操作可以翻转任意一个棋子,同时被翻转棋子的相邻棋子也会被翻转,问最少需要几步操作就可以将所有棋子置于全黑或者全白。

思路:实际上一个棋子最终的状态只与初始状态和被翻转过的次数的奇偶性有关,如果是偶次则保持初始状态不变,如果是奇数则是另一面,所以可以直接将翻转次数当做只有0次和1次,同时,翻转的顺序也是不会影响最终的状态的。因此可以将题意转化为:最多操作16次,且每个格子只能操作1次,问能否达到目的,这时候翻转的所有状态就只有2^16种。因此可以枚举所有翻转状态,再一一判断当前这种翻转状态下的最终态是否满足目的。

具体做法:将棋盘转化成一行二进制数,用1表示黑色,用0表示白色(左上角是第15位,即最高位,右下角第0位),判断初态是否满足要求,不满足则从1枚举到(1 << 16) - 1,中的所有状态。枚举的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值