POJ 1753 Flip Game 棋盘状态搜索
2016-08-13 14:26
387 查看
按规则翻转棋子的模拟题。也是一道搜索题。
题意:给出一个棋盘的初始状态,翻动一粒棋子会使得翻动的棋子和周围东南西北四个方向上的棋子也会翻转。black to white , white to black
传送门:POJ-1753-Flip Game
题意:给出一个棋盘的初始状态,翻动一粒棋子会使得翻动的棋子和周围东南西北四个方向上的棋子也会翻转。black to white , white to black
传送门:POJ-1753-Flip Game
/** * @Author: Hallbow * @Date: 2016-07-22T11:04:59+08:00 * @Email: 812966736@qq.com * @Last modified by: Hallbow * @Last modified time: 2016-08-01T11:01:02+08:00 */ #include <stdio.h> #define INF 0xFFFFFF bool map[4][4] = {0}; bool vis[4][4] = {0}; int minSteps = INF; // 是否已全白全黑 bool checkMap(){ for(int i=0; i<4; i++){ for(int j=0; j<4; j++){ if(map[i][j] != map[0][0]){ return false; } } } return true; } // 翻转(x,y) void converseMap(int x, int y){ if(x > 0) map[x-1][y] = !map[x-1][y]; if(x < 3) map[x+1][y] = !map[x+1][y]; if(y > 0) map[x][y-1] = !map[x][y-1]; if(y < 3) map[x][y+1] = !map[x][y+1]; map[x][y] = !map[x][y]; } // dfs void dfs(int x, int y, int steps){ // 若已到第四行 check是否胜利 if(x == 4){ if(checkMap()){ if(steps < minSteps) minSteps = steps; } return; } int i,j; // 翻 converseMap(x, y); // 换行 if(y == 3){ // 下个棋子 dfs(x+1, 0, steps+1); // 回溯 不翻 converseMap(x, y); // 下一棋子 dfs(x+1, 0, steps); }else{ dfs(x, y+1, steps+1); converseMap(x, y); dfs(x, y+1, steps); } } int main(){ int i,j; char _map[5]; // freopen("data.in", "r", stdin); while(1){ minSteps = INF; for(i=0; i<4; i++){ if(scanf("%s", _map) == EOF) return 0; for(j=0; _map[j]; j++){ map[i][j] = _map[j] == 'b' ? true: false; } } dfs(0, 0, 0); if(minSteps != INF){ printf("%d\n", minSteps); }else{ printf("Impossible\n"); } } return 0; }
相关文章推荐
- POJ 1753 Flip Game 状态压缩 枚举
- poj 1753 Flip Game 枚举(bfs+状态压缩)
- poj 1753 Flip Game(bfs状态压缩 或 dfs枚举)
- Flip Game 棋盘翻转(深搜,暴力)POJ1753
- 枚举状态POJ1753-Flip Game(枚举)
- 20140426 【DP - 状态压缩】 POJ 1753 Flip Game
- poj1753 Flip Game 状态压缩+bfs
- POJ 1753 Flip Game(BFS+状态压缩)
- POJ-1753 Flip Game 枚举 状态压缩
- 【搜索】【poj 1753】Flip Game
- POJ 1321 经典棋盘问题 的搜索和状态压缩解法
- Poj 1753 Flip Game 状态压缩 + DFS
- POJ 1753 Flip Game (状态压缩+BFS) -- 解题报告
- POJ 1753 Flip Game【翻转棋盘+枚举+dfs】
- Flip Game(poj1753,状态压缩+暴力枚举)
- POJ 1753 Flip Game(状态压缩)
- zoj 2050 || poj 1753 Flip Game(状态压缩 简单BFS)
- POJ 1753 Flip Game(枚举+状态压缩BFS)
- Poj_1753 Flip Game(状态压缩,bfs)
- POJ-1753 Flip Game (BFS+状态压缩)