POJ 1753 ID+DFS
2010-02-13 20:49
260 查看
#include <stdio.h> #include <stdlib.h> /* ID+ DFS */ char a[5][5]; int flag; int check() { int i,j; char c=a[0][0]; for (i=0;i<4;i++) for (j=0;j<4;j++) if (a[i][j]!=c) return 0; return 1; } void DFS(int depth,int start,int step) { int row,column,i; if (depth>step) { if (check()) flag=1; return; } else { for (i=start;i+(step-depth)<=16;i++) { row=i/4; column=i%4; if (row>0) a[row-1][column]=(a[row-1][column]=='b')?'w':'b'; if (row<3) a[row+1][column]=(a[row+1][column]=='b')?'w':'b'; if (column>0) a[row][column-1]=(a[row][column-1]=='b')?'w':'b'; if (column<3) a[row][column+1]=(a[row][column+1]=='b')?'w':'b'; a[row][column]=(a[row][column]=='b')?'w':'b'; DFS(depth+1,i+1,step); if (flag==1) return; /* UNDO */ if (row>0) a[row-1][column]=(a[row-1][column]=='b')?'w':'b'; if (row<3) a[row+1][column]=(a[row+1][column]=='b')?'w':'b'; if (column>0) a[row][column-1]=(a[row][column-1]=='b')?'w':'b'; if (column<3) a[row][column+1]=(a[row][column+1]=='b')?'w':'b'; a[row][column]=(a[row][column]=='b')?'w':'b'; } } } int main() { int i,step; freopen("input.in","r",stdin); for (i=0;i<4;i++) gets(a[i]); if (check()) { printf("0/n"); return 0; } for (step=1;step<=16;step++) { flag=0; DFS(1,0,step); if (flag==1) { printf("%d/n",step); break; } } if (flag==0) printf("Impossible/n"); }
相关文章推荐
- POJ 1753-Flip Game(枚举&&DFS)
- poj 1753 Flip Game (dfs)
- POJ 3134 Power Calculus ID-DFS +剪枝
- POJ 1753 Flip Game (DFS + 枚举)
- POJ 3134 - Power Calculus (IDDFS)
- poj 1753||poj 2965 枚举+dfs
- poj 1753 Flip Game(bfs状态压缩 或 dfs枚举)
- 解题报告:POJ 1753 Flip Game 简单深搜dfs
- poj 1753 Flip Game【dfs】
- POJ 题目1753 Flip Game(DFS)
- POJ 1753 Flip Game(dfs+枚举)
- poj 1753 dfs递归组合数
- poj 1753 : Flip Game (枚举+dfs)
- poj 1753 枚举加dfs
- POJ 3134 Power Calculus ID-DFS +剪枝
- POJ--1753--Flip Game【DFS】
- POJ 2965 DFS解法 原理与1753类似 稍加改造即可ac
- [poj] 2286 The Rotation Game || ID-DFS
- POJ 1753 Flip Game (DFS)
- POJ 1753 Flip Game(类似与N皇后问题的DFS)