POJ1753解题报告(位压缩+DFS/BFS)

题目描述:
Flip game is played on a rectangular 4x4 field with two-sided pieces placed on each of its 16 squares.
One side of each piece is white and the other one is black and each piece is lying either it's black or white side up.
Each round you flip 3 to 5 pieces, thus changing the color of their upper side from black to white and vice versa.
The pieces to be flipped are chosen every round according to the following rules: 
Choose any one of the 16 pieces. 
Flip the chosen piece and also all adjacent pieces to the left, to the right, to the top, and to the bottom of the chosen piece (if there are any).

其实就是翻转每个位置,有些文章里面说到,每个位置只需要至多被翻转一次,这个是理论依据。毕竟一个位置变偶数次那么这个位置就复原了。

基本的思想应该是遍历2^16个状态,用int显然太浪费空间了,所以考虑位压缩。遍历其实有两种方式一种是BFS这是最基本的,还有简洁一点的就是DFS,都是遍历,BFS找到了最短路劲就退出,但是DFS不会,必须遍历完,但是只要保存下来最短的一次就好了,但是代码很简洁。

位翻转的思想是16位排成[15 14 13...3 2 1 0]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值