Qiuqiqiu  
不管道路多么崎岖坎坷,我永远不停下追逐梦想的脚步!

http://acm.hdu.edu.cn/showproblem.php?pid=1312

dfs

我的代码
 1 #include <stdio.h>
2 #include <string.h>
3 const int N=25;
4 const int dx[4]={1,0,-1,0};
5 const int dy[4]={0,1,0,-1};
6 char maze[N][N];
7 bool vis[N][N];
8 int m,n,cnt;
9 void dfs(int x,int y)
10 {
11 cnt++;
12 vis[x][y]=1;
13 int d,nx,ny;
14 for (d=0;d<4;d++)
15 {
16 nx=x+dx[d]; ny=y+dy[d];
17 if (nx<0 || nx>=n || ny<0 || ny>=m || maze[nx][ny]=='#' || vis[nx][ny]) continue;
18 dfs(nx,ny);
19 }
20 }
21 int main()
22 {
23 int i,j;
24 while (scanf("%d%d",&m,&n),n||m)
25 {
26 cnt=0;
27 memset(vis,0,sizeof(vis));
28 for (i=0;i<n;i++) scanf("%s",maze[i]);
29 for (i=0;i<n;i++)
30 for (j=0;j<m;j++)
31 if (maze[i][j]=='@') dfs(i,j);
32 printf("%d\n",cnt);
33 }
34 return 0;
35 }

 

posted on 2012-01-13 13:08  Qiuqiqiu  阅读(148)  评论(0编辑  收藏  举报