题意:求一个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;
}