码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 1312

时间:2016-01-19 23:35:03      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:

题意:‘.’代表黑色瓷砖,‘#’代表红色瓷砖,‘@’代表一个人的起始位置,问这个人最多能踩到多少黑色瓷砖,注意注意!!!先输入列在输入行。

思路:也是典型的dfs,但是这里每访问一个黑色瓷砖的话,就标记为‘#’,代表不能再访问他了,因为在此访问的话,总数就不对了。(为此本弱调试了半小时才发现)

 

 1 #include<cstdio>
 2 #include<cmath>
 3 #include<cstring>
 4 const int qq=20+5;
 5 int n,m,tot;
 6 char map[qq][qq];
 7 int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
 8 void dfs(int x,int y)
 9 {
10     ++tot;
11     for(int i=0;i<4;++i){
12         int tx,ty;
13         tx=x+dir[i][0];ty=y+dir[i][1];
14         if(tx<0||ty<0||tx>=n||ty>=m||map[tx][ty]==#)
15             continue;
16         map[tx][ty]=#;
17         dfs(tx,ty);
18     }
19     return;
20 }
21 int main()
22 {
23     while(scanf("%d%d",&m,&n)&&(n||m))
24     {    
25         int sx,sy;
26         getchar();
27         for(int j,i=0;i<n;++i){
28             for(j=0;j<m;++j){
29                 map[i][j]=getchar();
30                 if(map[i][j]==@){
31                     sx=i;sy=j;map[i][j]=#;
32                 }
33             }
34             getchar();
35         }
36         tot=0;
37         dfs(sx,sy);
38         printf("%d\n",tot);
39     }
40 }

 

HDU 1312

标签:

原文地址:http://www.cnblogs.com/sasuke-/p/5143743.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!