当前位置: 代码迷 >> 综合 >> hdu - 1312 - Red and Black
  详细解决方案

hdu - 1312 - Red and Black

热度:66   发布时间:2024-01-10 13:35:36.0

题意:求一个H*W的地图中一指定的起点的连通的黑色格子有多少个。

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

——>>简单dfs。

#include <cstdio>using namespace std;const int maxn = 20 + 10;
char MAP[maxn][maxn];
int W, H, sx, sy, cnt;
int dx[] = {-1, 1,  0, 0};
int dy[] = { 0, 0, -1, 1};void dfs(int x, int y)
{for(int i = 0; i < 4; i++){int newx = x + dx[i];int newy = y + dy[i];if(newx >= 0 && newx < H && newy >= 0 && newy < W && MAP[newx][newy] == '.'){MAP[newx][newy] = '#';cnt++;dfs(newx, newy);}}
}
int main()
{int i, j;while(scanf("%d%d", &W, &H) == 2){if(!W && !H) return 0;for(i = 0; i < H; i++){getchar();for(j = 0; j < W; j++){MAP[i][j] = getchar();if(MAP[i][j] == '@'){sx = i;sy = j;}}}cnt = 1;dfs(sx, sy);printf("%d\n", cnt);}return 0;
}


  相关解决方案