HDU 1547 Bubble Shooter
2012-01-15 14:06
381 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1547
dfs
我的代码
dfs
我的代码
#include <stdio.h> #include <string.h> const int N=210; const int dx[6]={0,1,1,0,-1,-1}; const int dy[6]={2,1,-1,-2,-1,1}; char maze ; int m,n,ans; void dfs1(int x,int y,char c) { maze[x][y]=0; ans++; int d,nx,ny; for (d=0;d<6;d++) { if (y==1 && d==3) continue; nx=x+dx[d]; ny=y+dy[d]; if (maze[nx][ny]==c) dfs1(nx,ny,c); } } void dfs2(int x,int y) { maze[x][y]=0; int d,nx,ny; for (d=0;d<6;d++) { if (y==1 && d==3) continue; nx=x+dx[d]; ny=y+dy[d]; if (maze[nx][ny]) dfs2(nx,ny); } } int main() { int x,y,i,j; while (~scanf("%d%d%d%d",&n,&m,&x,&y)) { ans=0; m=m*2-1; memset(maze,0,sizeof(maze)); for (i=1;i<=n;i++) { char s ; scanf("%s",s); if (i%2) for (j=0;s[j];j++) maze[i][j*2+1]=s[j]; else for (j=0;s[j];j++) maze[i][j*2+2]=s[j]; for (j=1;j<=m;j++) if (maze[i][j]=='E') maze[i][j]=0; } if (x%2) y=y*2-1; else y=y*2; dfs1(x,y,maze[x][y]); if (ans<3) ans=0; else { for (i=1;i<=m;i++) if (maze[1][i]) dfs2(1,i); for (i=1;i<=n;i++) for (j=1;j<=m;j++) if (maze[i][j]) ans++; } printf("%d\n",ans); } return 0; }
相关文章推荐
- HDU 1547 Bubble Shooter(BFS)
- HDU 1547 Bubble Shooter(BFS蔓延模拟)
- HDU 1547 Bubble Shooter BFS
- HDU-1547 Bubble Shooter 搜索
- hdu 1547 Bubble Shooter(DFS)
- hdu 1547 Bubble Shooter
- hdu 1547 Bubble Shooter(深搜)
- hdu 1547 搜索题
- HDOJ-1547 Bubble Shooter 简单搜索
- hdoj 1547 Bubble Shooter(dfs+dfs)
- hdu 1547(BFS)
- 杭电 HOJ 1547 Bubble Shooter 解题报告
- HDU 1547 搜索
- TOJ 2822 ZOJ 2749 HDU 1547 Bubble Shooter / 广搜
- 【HDOJ】1547 Bubble Shooter
- HDU 2111 Saving HDU
- [恢]hdu 2074
- hdu_OJ_2222
- Alice and Bob----HDU_4268----贪心+STL
- hdu 1162 Eddy's picture