2015 CCPC G题 【DFS 暴力】
2015-10-28 19:15
295 查看
题目链接 点我
题意:给定一个9*9的围棋局面,要求你先除去对方的死棋,再除去己方的死棋。对于当前局面,问能否通过一手棋吃掉对面至少一个子。
思路:对于每个.字符,先填上字符x,判断临近的o字符有没有被消灭。
题意:给定一个9*9的围棋局面,要求你先除去对方的死棋,再除去己方的死棋。对于当前局面,问能否通过一手棋吃掉对面至少一个子。
思路:对于每个.字符,先填上字符x,判断临近的o字符有没有被消灭。
#include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <algorithm> #include <map> #include <string> #include <vector> #define lson o<<1|1, l, mid #define rson o<<1, mid+1, r #define ll o<<1 #define rr o<<1|1 #define INF 0x3f3f3f3f #define eps 1e-8 #define debug printf("1\n") #define MAXN 10000 #define MAXM 100000 #define LL long long #define CLE(a, b) memset(a, (b), sizeof(a)) #define W(a) while(a--) #define Ri(a) scanf("%d", &a) #define Pi(a) printf("%d\n", (a)) #define Rl(a) scanf("%lld", &a) #define Pl(a) printf("%lld\n", (a)) #define Rs(a) scanf("%s", a) #define Ps(a) printf("%s\n", (a)) using namespace std; char str[10][10]; int vis[10][10]; int Move[4][2] = {0,1, 0,-1, 1,0, -1,0}; bool judge(int x, int y){ return x >= 0 && x < 9 && y >= 0 && y < 9; } bool kill(int x, int y) { vis[x][y] = true; for(int i = 0; i < 4; i++) { int next_x = x + Move[i][0]; int next_y = y + Move[i][1]; if(vis[next_x][next_y] || !judge(next_x, next_y)) continue; if(str[next_x][next_y] == '.' || (str[next_x][next_y] == 'o' && !kill(next_x, next_y))) return false; } return true; } bool can(int x, int y) { str[x][y] = 'x'; for(int i = 0; i < 4; i++) { int next_x = x + Move[i][0]; int next_y = y + Move[i][1]; if(judge(next_x, next_y) && str[next_x][next_y] == 'o') { memset(vis, false, sizeof(vis)); if(kill(next_x, next_y)) return true; } } str[x][y] = '.'; return false; } int main() { int t, kcase = 1; Ri(t); W(t) { for(int i = 0; i < 9; i++) Rs(str[i]); bool flag = false; for(int i = 0; i < 9; i++) { for(int j = 0; j < 9; j++) { if(str[i][j] == '.') { if(can(i, j)) { flag = true; break; } } if(flag) break; } if(flag) break; } if(flag) printf("Case #%d: Can kill in one move!!!\n", kcase++); else printf("Case #%d: Can not kill in one move!!!\n", kcase++); } return 0; }
相关文章推荐
- 2015 CCPC D题 【0-1背包变形】
- 守望者的逃离
- 蓝桥杯 历届试题 国王的烦恼
- 2015 CCPC C题 【树状数组优化dp】
- hdu1114 Piggy-Bank (完全背包)
- 【iOS开发】transform属性的使用
- 2015 CCPC A题 【水题】
- Java中Map遍历的四种方案
- Map接口的使用
- java日期格式化
- C++_4种强制类型转换
- 记录-论文1
- linux超级终端minicom的使用方法
- Oracle 大索引重组、大表重组
- Java多线程
- Silverlight网页游戏设计思想(WebGame Essence)
- 以去哪儿换携程,百度盘活O2O大局为糯米铺路
- QT学习之路(二)————Linux下搭建qt程序编译环境、开发板上搭建qt程序运行环境
- 俄罗斯没有那么大,欧洲真的超小,我们看到的地图一直都错得离谱……
- Android中实现app版本更新