URAL 1122 Game
2015-10-10 14:16
260 查看
#include <stdio.h> int chips[4][4]; int move[3][3]; int minMoves = 17; int isInRange(int row, int column){ return row >= 0 && row < 4 && column >= 0 && column < 4; } void turnOver(int row, int column){ int i, j; for (i = -1; i < 2; i++) for (j = -1; j < 2; j++){ int x = row + i; int y = column + j; if (move[1 + i][1 + j] && isInRange(x, y)) chips[x][y] = 1 - chips[x][y]; } } int isGameOver(){ int temp = chips[0][0]; int row, column; for (row = 0; row < 4; row++) for (column = 0; column < 4; column++) if (chips[row][column] != temp) return 0; return 1; } void playGame(int position, int numOfMoves){ if (isGameOver()){ if (numOfMoves < minMoves) minMoves = numOfMoves; return; } if (numOfMoves >= minMoves - 1 || position >= 16) return; int row = position / 4; int column = position % 4; turnOver(row, column); playGame(position + 1, numOfMoves + 1); turnOver(row, column); playGame(position + 1, numOfMoves); } int main(){ char cha; int row, column; for (row = 0; row < 4; row++){ for (column = 0; column < 4; column++){ scanf("%c", &cha); if (cha == 'W') chips[row][column] = 0; else chips[row][column] = 1; } scanf("%c", &cha); } for (row = 0; row < 3; row++){ for (column = 0; column < 3; column++){ scanf("%c", &cha); if (cha == '0') move[row][column] = 0; else move[row][column] = 1; } scanf("%c", &cha); } playGame(0, 0); if (minMoves == 17) printf("Impossible\n"); else printf("%d\n", minMoves); return 0; }
相关文章推荐
- Win2003利用dfs(分布式文件系统)在负载均衡下的文件同步配置方案
- win2003分布式文件系统(dfs)配置方法[图文详解]
- win2003分布式文件系统及其部署 图文教程
- 分享自己写的一个贪吃蛇的游戏(Linux)
- 分享一个蛋疼的俄罗斯方块小游戏
- Linux下的字符界面扫雷游戏
- linux下的图形界面扫雷游戏(Gtk+2.0)
- 第三章 实现Eclipse Android与J2me平台切换(下)
- Hadoop2.6+jdk8的安装部署(1)——使用jar包安装部署【详细】
- cocos2d里面如何实现MVC(二)
- cocos2d里面如何实现MVC(四)
- Hadoop FS Shell
- DFS使用方法总结
- FastDFS注意事项
- 无忧技术带您预览DFS(分布式文件系统)管理控制台
- 依赖链接器最小化编译时间(Abusing the Linker to Minimize Compilation Time)
- C 语言实现迷宫 DFS算法
- 一幅图弄清DFT与DTFT,DFS的关系
- HDFS---Namenode