通过代码:
#include <bits/stdc++.h> using namespace std; int m,n,sum; char ch; int a[1001][1001], avl[1001][1001]; const int dx[] = { -1, 0, 1, 0 }; const int dy[] = { 0, -1, 0, 1 }; void dfs(int x, int y) { for(int i = 0; i < 4; i ++) { int nx = x + dx[i]; int ny = y + dy[i]; if(nx >= 1 && ny >= 1 && nx <= n && ny <= m && avl[nx][ny] && a[nx][ny] == 1) { avl[nx][ny] = false, sum ++; dfs(nx, ny); } } } int main() { while(scanf("%d%d", &m, &n) != EOF && m && n) { int x, y; sum = 1; memset(a, 0, sizeof(a)); memset(avl, true, sizeof(avl)); for(int i = 1; i <= n; i ++) for(int j = 1; j <= m; j ++) { cin >> ch; if(ch == '@') x = i,y = j, a[i][j] = false; else if(ch == '.') a[i][j] = 1; else if(ch == '#') a[i][j] = 0; } avl[x][y] = 1; dfs(x, y); printf("%d\n", sum); } return 0; }
1216:红与黑
最新推荐文章于 2021-10-17 21:29:32 发布