POJ1753 Flip Game DFS+枚举
来源:互联网 发布:软件实施顾问发展前景 编辑:程序博客网 时间:2024/06/07 20:24
题目大意:有一个4×4的棋盘,棋盘上每一点都有黑白两面,每次可以翻转任意一点,在翻转某一点时,该点上下左右的4个临近点同时也会被翻转,现在问你要使棋盘上所有点的颜色统一所需要的最小翻转次数。
分析:其实这道题是典型的高斯消元,不过我是用DFS来做的。
首先我们知道,对于棋盘上任意一点,翻转偶数次是没有意义的,翻转奇数次和翻转一次是一样的,这就意味着,最大的翻转次数也不会超过4×4=16次,这样我们就可以枚举每一次翻转,看是否满足题意,第一个满足题意的翻转次数即为最终结果。
实现代码如下:
#include <cstdio>#include <iostream>using namespace std;int map[10][10]={0};//考虑到要不断翻转,我们用0和1代表棋盘黑白两种颜色,这样翻转就可以用“非”运算符来代替了int dir[5][2]={{-1,0},{1,0},{0,-1},{0,1},{0,0}};int sum;bool flag;void flip(int x,int y)//翻转(x,y)及其相邻点{ for(int i=0;i<=4;i++) map[x+dir[i][0]][y+dir[i][1]]=!map[x+dir[i][0]][y+dir[i][1]]; return ;}bool judge()//判断棋盘是否单色{ int i,j; for(i=1;i<=4;i++) for(j=1;j<=4;j++) if(map[i][j]!=map[1][1]) return false; return true;}void dfs(int x,int y,int ans)//ans纪录翻转次数{ if(ans==sum) { flag=judge(); return ; } if(flag||x==5) return ; flip(x,y); if(y<4) dfs(x,y+1,ans+1); else dfs(x+1,1,ans+1); flip(x,y); if(y<4) dfs(x,y+1,ans); else dfs(x+1,1,ans); return ;}int main(){ int i,j; char tmp; for(i=1;i<=4;i++) for(j=1;j<=4;j++) { cin>>tmp; if(tmp=='w') map[i][j]=1;//白色记为1,黑色记为0 } for(sum=0;sum<=16;sum++)//枚举16次翻转 { dfs(1,1,0); if(flag) break; } if(flag) printf("%d\n",sum); else puts("Impossible"); return 0;}
0 0
- POJ1753 Flip Game DFS+枚举
- poj1753 Flip Game DFS,枚举
- poj1753 Flip Game(枚举Enum+dfs)
- POJ1753--Flip Game(枚举)
- POJ1753 Flip Game【DFS】
- POJ1753 Flip Game (DFS)
- poj1753 Flip Game dfs 枚举 待补完 位运算
- poj1753——Flip Game(枚举+dfs)
- poj1753 Flip Game 枚举+BFS
- POJ1753,Flip Game,枚举,bfs都可以
- poj1753 Flip Game 枚举 暴力 递归
- (枚举初级+回溯)poj1753 Flip Game
- 【dfs】poj1753——Flip Game
- poj Flip game【DFS 枚举】
- Flip Game(DFS枚举)
- poj1753 Flip Game
- poj1753 Flip Game
- poj1753 Flip Game
- 二分检索
- 数据结构复习-顺序表L中删除重复元素,并使元素相对次序保持不变
- CentOS6.5系统挂载NTFS分区的硬盘
- C++类(二)
- 单例模式
- POJ1753 Flip Game DFS+枚举
- 二级 计算并且输出1+(1+根号2)+。。。()的和
- android 屏幕适应性
- 命令模式
- 项目一—旱冰场造价
- Java批量更改文件名
- .猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,好不过瘾,又多吃了一个。第二天早上又吃了剩下的桃子的一半,又多吃了一个。以后每天都吃了前一天剩下的一半零一个,到第10天早上想再吃的时候,就剩下
- android开发中如何结束所有的activity
- nbsp浏览器宽度不一致的解决办法