poj.1753dfs
来源:互联网 发布:nba乔丹职业生涯数据 编辑:程序博客网 时间:2024/05/21 07:51
这道题的意思很简单,主要需要注意的有两点,第一:矩阵中的每个点都最多被主动翻一次,(注意不是被动),所以总共有2^16种可能,只要枚举每种可能了。第二:翻转的顺序对结果没有影响,所以问题的关键就在于那些点被主动翻转了。翻转多少次就有多少次round,只要求出所有round中最小的一个就是答案了,如果没有一种可能可以得到结果则输出“Impossible"。下面是代码和测试数据:
//#include <iostream>#include <stdio.h>#include <stdlib.h>//using namespace std;#define Inf 1000000int maxn;int s[4][4];void Init(){char ch[4][4];int i,j;for(i=0;i<4;i++)scanf("%s",ch[i]);for(i=0;i<4;i++)for(j=0;j<4;j++){if(ch[i][j]=='b')s[i][j]=1;elses[i][j]=-1;}/*for(i=0;i<4;i++)for(j=0;j<4;j++) printf("%d ",s[i][j]);*/}bool Is_right(int (*t)[4]){int i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)if(t[i][j]!=t[0][0])return false;return true;}void dfs(int (*t)[4],int x,int y,int deep){if(Is_right(t)){if(deep<maxn)maxn=deep;return ;}if(x>=4)return ;//int (*record)[4]=t;int record[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)record[i][j]=t[i][j];if(x>=0 && x<=3 && y>=0 && y<=3)record[x][y]=-record[x][y];if(x-1>=0 && x-1<=3 && y>=0 && y<=3)record[x-1][y]=-record[x-1][y];if(x+1>=0 && x+1<=3 && y>=0 && y<=3)record[x+1][y]=-record[x+1][y];if(x>=0 && x<=3 && y-1>=0 && y-1<=3)record[x][y-1]=-record[x][y-1];if(x>=0 && x<=3 && y+1>=0 && y+1<=3)record[x][y+1]=-record[x][y+1];if(y<=2){dfs(t,x,y+1,deep);dfs(record,x,y+1,deep+1);}else{dfs(t,x+1,0,deep);dfs(record,x+1,0,deep+1);}}int main(){//int i,j;while(true){ Init(); if(Is_right(s)){printf("0\n");continue;//return 0;}maxn=Inf;dfs(s,0,0,0);if(maxn==Inf){printf("Impossible\n");continue;//return 0;}printf("%d\n",maxn);}return 0;}
bwbw
wwww
bbwb
bwwb
bwwb
bbwb
bwwb
bwww
wwww
wwww
wwww
wwww
bbbb
bbbb
bbbb
bbbb
bbbb
bwbb
bbbb
bbbb
bwbb
bwbb
bwbb
bbbb
bwbb
wwwb
bwbb
bbbb
wwww
wwwb
wwbb
wwwb
wwww
wwww
wwwb
wwbb
wbwb
bwbw
wbwb
bwbw
bbbb
bwwb
bwwb
bbbb
bwwb
wbbw
wbbw
bwwb
bbww
bbww
wwbb
wwbb
bbwb
bbbw
wwbb
wwwb
wwwb
wwbw
wbww
wwbw
bbbb
wwww
wwbb
wbbb
bwwb
wbwb
wbbb
wbbb
bwbb
bwbb
bwbw
bbbw
wbwb
bbbb
bbww
wbbb
bbwb
bbbb
wbwb
bbbb
- POJ 1753 ID+DFS
- poj.1753dfs
- POJ 1753 DFS
- POJ 1753 dfs+枚举
- poj 1753 枚举+dfs
- poj 1753 枚举加dfs
- POJ 1753 Flip Game (DFS)
- POJ--1753--Flip Game【DFS】
- POJ 1753 Flip Game (DFS)
- poj 1753 Flip Game【dfs】
- POJ 1753 Filp Game dfs
- POJ-1753(深搜DFS)
- poJ 1753(dfs) Flip Game
- poj 1753 Flip Game(dfs)
- poj 1753||poj 2965 枚举+dfs
- DFS POJ
- POJ DFS
- poj 1753 Flip Game(dfs+枚举)
- 可用的代码片段
- Verilog HDL模块的结构
- io的输入与输出
- modelsim使用命令
- Spring core
- poj.1753dfs
- 闪回数据库(Flashback Database)
- makefile双冒号规则
- Verilog代码标准
- Web开发中的用户角色权限设计总结
- Ruby函数lambda知识讲解
- 输入输出流的理解
- 如何在TOMCAT下指定JDK的路径
- Java heap terminology: young, old and permanent generations