Red and Black

来源:互联网 发布:纹理过滤 三线性优化 编辑:程序博客网 时间:2024/06/09 19:23

Red and Black

 HDU - 1312 

题意是从#开始,能连接到最多的‘ . ’有多少个。

#include<cstdio>#include<cstring>#include<algorithm>using namespace std;char str[521][521];int x,y;int fx[4] = {1,-1,0,0};int fy[4] = {0,0,1,-1};//上下左右四个方向//int ans;int n,m;void  dfs(int x,int y){ans++;str[x][y] = '#'; //ans加1后将该点变成#// for(int k = 0; k < 4; k++){int xx=x+fx[k];int yy=y+fy[k];if(xx>=0&&yy>=0&&xx<n&&yy<m&&str[xx][yy]=='.'){dfs(xx,yy);//利用递归找到所有的'.'//}}}int main()  {        while(~scanf("%d%d%*c",&m,&n))//注意%*c吸收换行符,要不下面影响str数组的值//    {          if(m == 0 && n == 0)              break;          for(int i = 0; i<n; i++)          {              for(int j = 0; j<m; j++)              {                  scanf("%c",&str[i][j]);                  if(str[i][j] == '@') //找到@的坐标//                 {                      x = i;                      y = j;                  }              }              getchar();//吸收换行符//         }          ans = 0;        //map[i][j] = '#';          dfs(x,y);        printf("%d\n",ans);      }        return 0;  } 

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312



愿你一生清澈明朗,做你愿做之事,爱你愿爱之人!