POJ1979 dfs xingxing在努力
求连通域内元素个数, 水题一个直接贴代码:
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; int n, m; //n行m列 int Map[30][30]; int vis[30][30]; int sx, sy; int dx[4] = {0, 0, 1, -1}; int dy[4] = {1, -1, 0, 0}; int dfs(int x, int y) { int res = 1; vis[x][y] = 1; for(int i=0; i<4; i++) { int nx = x + dx[i], ny = y + dy[i]; if(nx>=0&&nx<n&&ny>=0&&ny<m&&!vis[nx][ny]&&Map[nx][ny]==0) res += dfs(nx, ny); } return res; } int main() { while(scanf("%d%d", &m, &n) == 2) { if(n==0 && m==0) break; for(int i=0; i<n; i++) { char s[30]; //开小了 贡献2发wa 醉了 scanf("%s", s); for(int j=0; j<m; j++) if(s[j]=='.') Map[i][j] = 0; else if(s[j]=='#') Map[i][j] = 1; else { Map[i][j] = 2; sx = i; sy = j; } } memset(vis, 0, sizeof(vis)); printf("%d\n", dfs(sx, sy)); } return 0; }

浙公网安备 33010602011771号