【dfs】poj1753——Flip Game
2013-09-16 20:32
387 查看
来源:点击打开链接
网络赛已被虐瞎……做点经典题找自信。
最多有2^16种状态,DFS/BFS都可以,参考了小優YoU的博客:
网络赛已被虐瞎……做点经典题找自信。
最多有2^16种状态,DFS/BFS都可以,参考了小優YoU的博客:
#include <iostream> #include <cstring> using namespace std; bool mat[6][6]; int step; bool flag; int dirc[5]={0,0,1,-1,0}; int dirr[5]={1,-1,0,0,0}; bool isfinal() { for(int i=1;i<=4;i++) { for(int j=1;j<=4;j++) { if(mat[i][j]!=mat[1][1]) return false; } } return true; } void flip(int row,int col) { for(int i=0;i<=4;i++) { mat[row+dirr[i]][col+dirc[i]]=!mat[row+dirr[i]][col+dirc[i]]; } return; } void dfs(int row,int col,int deep) { if(deep==step) { flag=isfinal(); 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() { memset(mat,0,sizeof(mat)); char tmp; for(int i=1;i<=4;i++) { for(int j=1;j<=4;j++) { cin>>tmp; if(tmp=='b') mat[i][j]=1; } } for(step=0;step<=16;step++) { dfs(1,1,0); if(flag) break; } if(flag) cout<<step<<endl; else cout<<"Impossible"<<endl; return 0; }
相关文章推荐
- 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--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 1753 Flip Game (DFS + 暴力枚举)
- POJ 1753 Flip Game(DFS)
- POJ 1753 Flip Game【暴搜DFS】
- POJ 1753-Flip Game(枚举&&DFS)