简单dfs:UVA 260 Il Gioco dell'X
2014-10-04 22:23
405 查看
写程序果然是要静心,不然就漏洞百出。一道简单的dfs竟然wa了好多次。
题解:必有一胜,所以只判断black胜不胜就够了。black胜利的条件是能从第一行走到最后一行,white的胜利条件是能出第一列走到最后一列,要注意的是不(i,j)不能到
(i+1,j-1)和(i-1,j+1)。
题解:必有一胜,所以只判断black胜不胜就够了。black胜利的条件是能从第一行走到最后一行,white的胜利条件是能出第一列走到最后一列,要注意的是不(i,j)不能到
(i+1,j-1)和(i-1,j+1)。
#include <iostream> #include <cstdio> using namespace std; int n; char str[205][205]; int ax; bool flag=true; int counter=1; int dir[6][2]={{-1,-1},{-1,0},{0,-1},{0,1},{1,0},{1,1}}; void dfs(int x,int y){ int dx,dy; str[x][y]='.'; for(int i=0;i<6;i++){ dx=x+dir[i][0]; dy=y+dir[i][1]; if(dx<n && dy<n && dx>=0 && dy>=0&& str[dx][dy]=='b'){ ax=dx; if(ax==n-1){ flag=false; } dfs(dx,dy); } } } int main() { while(~scanf("%d",&n)){ flag=true; if(n==0)break; ax=0; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ scanf(" %c",&str[i][j]); } } for(int i=0;i<n;i++){ if(str[0][i]=='b'){ dfs(0,i); } } if(flag){ printf("%d W\n",counter); counter++; } else{ printf("%d B\n",counter); counter++; } } return 0; }
相关文章推荐
- poj2488 A Knight's Journey 简单DFS 注意搜索步骤
- UVa 260 - Il Gioco dell'X
- UVa 10817 - Headmaster's Headache (简单DP 状态压缩)
- UVa 12118 - Inspector's Dilemma(DFS判连通+欧拉回路)
- UVA 716(Commedia dell' arte-三维八数码)
- UVA 152 Tree's a Crowd (简单计算)
- UVA 716 - Commedia dell' arte 逆序数
- UVA 10010 Where's Waldorf? (DFS)
- Bachet's Game+uva+简单dp
- UVa 10985 Rings'n'Ropes / floyd + dfs
- UVa 639 Don't Get Rooked (DFS好题)
- undefined reference to `cvLoadImage' 一个简单的解决方法
- uva 152 Tree's a Crowd
- uva 639 - Don't Get Rooked
- HDOJ 1009 FatMouse' Trade简单的贪心
- dp专辑F - Mondriaan's Dream [dp+dfs]
- UVa 10010 - Where's Waldorf?
- uva 10010 Where's Waldorf?
- JOJ 2190: Mondriaan's Dream (状态压缩DP +DFS)
- POJ 1681 Painter's Problem 高斯消元+DFS枚举