(pojstep1.1)1753(dfs+枚举)
来源:互联网 发布:天龙八部全套源码资源 编辑:程序博客网 时间:2024/04/30 09:02
题目大意:
有4*4的正方形,每个格子要么是黑色,要么是白色,当把一个格子的颜色改变(黑->白或者白->黑)时,其周围上下左右(如果存在的话)的格子的颜色也被反转,问至少反转几个格子可以使4*4的正方形变为纯白或者纯黑?
代码如下:
/* * 1753_1.cpp * * Created on: 2013年9月13日 * Author: Administrator */#include <iostream>#include <cstdio>using namespace std;/** * chess[][] :棋子的翻转情况 * flag : 判断是否是清一色 * step :已经进行的步数 * r[] :方向向量, 行移动的方向 * c[] :方向向量, 列移动的方向 */bool chess[6][6] = {false};//不要写成5,因为这里没对特定边界值进行处理。利用的只有中心的4x4bool flag;int step;int r[5] = {1,-1,0,0,0};int c[5] = {0,0,1,-1,0};/** * 判断所有棋子是否同色 */bool judge_all(){int i,j;for(i = 1 ; i < 5 ; ++i){for(j = 1 ; j < 5 ; ++j){if(chess[i][j] != chess[1][1]){return false;}}}return true;}/** * 翻转其中的一枚棋子,机器周围的棋子 */void flip(int row,int col){int i;for(i = 0 ; i < 5 ; ++i){chess[row + r[i]][col + c[i]] = !chess[row + r[i]][col + c[i]];}}void dfs(int row,int col , int deep){if(deep == step){flag = judge_all();return ;}if(flag || row == 5){return ;}flip(row,col);//翻棋if(col < 4){dfs(row,col+1,deep+1);}else{dfs(row+1,1,deep+1);}flip(row,col);//不符合则翻回来if(col < 4){dfs(row,col+1,deep);}else{dfs(row+1,1,deep);}return ;}int main(){int i,j;char temp;flag = false;step = 0;for(i = 1 ; i < 5 ; ++i){for(j = 1 ; j < 5 ; ++j){cin >> temp;if(temp == 'b'){chess[i][j] = true;}}}/** * 对每一步产生的可能性进行枚举 * 至于为什么是16,考虑到4x4=16格,而每一格只有黑白两种情况,则全部的可能性为2^16 */for(step = 0 ; step <=16 ; ++step){dfs(1,1,0);if(flag){break;}}if(flag){cout<<step<<endl;}else{printf("Impossible\n");}return 0;}
- (pojstep1.1)1753(dfs+枚举)
- POJ 1753 dfs+枚举
- poj 1753 枚举+dfs
- poj 1753 枚举加dfs
- DFS 枚举
- poj 1753||poj 2965 枚举+dfs
- poj 1753 Flip Game(dfs+枚举)
- POJ 1753 Flip Game dfs + 枚举
- POJ 1753 Flip Game DFS枚举
- POJ 1753 Flip Game (DFS + 枚举)
- poj 1753 Flip Game (dfs + 枚举)
- POJ 1753 Flip Game(dfs+枚举)
- POJ 1753 Flip Game(dfs+枚举)
- poj 1753 Flip Game【枚举+dfs】
- poj-1753Flip Game【DFS】【枚举】
- POJ 1753-Flip Game(枚举&&DFS)
- poj 1753 : Flip Game (枚举+dfs)
- POJ 1753 Flip Game(枚举+dfs)
- java-根据java的反射机制,利用类路径创建类-随心
- Erlang崩溃
- ios adhoc distribute with website
- Java程序两个数据表之间导数据mysql
- (转)C++中extern “C”含义深层探索
- (pojstep1.1)1753(dfs+枚举)
- MFC 浏览文件夹,浏览保存文件, 获取当前路径
- ganglia3.5 安装
- 递归和循环两种方法完成树的镜像转换
- 通过Eclipse插件Bytecode Outline方便了解Java字节码
- 导入插件报“找不到模块”
- 应用程序接收不到BOOT_COMPLETED消息的原因总结
- Qt波形图
- java面试题