poj1979 解题报告

来源:互联网 发布:mac安装windows 编辑:程序博客网 时间:2024/06/07 01:05
#include<iostream>#include<cstdio>char field[100][100];int M=100, N=100;int dx[4] = { -1, 1, 0, 0 }, dy[4] = { 0, 0, 1, -1 };int count = 0;int ans[100];int k = 0;void dfs(int x, int y){field[x][y] = '@';for (int i = 0; i < 4; i++){int nx = x + dx[i], ny = y + dy[i];if (0 <= nx&&nx < M && 0 <= ny&&ny < N&&field[nx][ny] == '.'){field[nx][ny] = '@';count++;dfs(nx, ny);}}return;}int main(void){while (1){count = 0;char ch;scanf("%d%d", &N, &M);while ((ch = getchar()) != '\n')continue;if (N == 0 && M == 0)break;for (int i = 0; i < M; i++)gets(field[i]);for (int i = 0; i < M; i++)for (int j = 0; j < N; j++){if (field[i][j] == '@'){dfs(i, j);}}ans[k] = count+1;k++;}for (int i = 0; i <k; i++)printf("%d\n", ans[i]);}
0 0
原创粉丝点击