By
yusijia
Updated:
题目:
有一间长方形的房子,地上铺了白色、黑色两种颜色的正方形瓷砖,你站在其中一块黑色
瓷砖上,只能想相邻的黑色瓷砖移动,请写一个程序,计算你总共能够到达多少块黑色的
瓷砖
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
#include <cstdio> #include <cstring> #define MAXN 31
char mp[MAXN][MAXN]; int m, n;
int dfs(int x, int y) { int d = 0; if(x < 0 || x >= n || y < 0 || y >= m || mp[x][y] == '#') return 0; if(mp[x][y] == '.'){ d = 1; mp[x][y] = '#'; } return d + dfs(x + 1, y) + dfs(x, y + 1) + dfs(x - 1, y) + dfs(x, y - 1); }
int main() { while(scanf("%d%d", &m, &n) != EOF && m + n){ int ans = 0; for(int i = 0; i < n; i++) scanf("%s", mp[i]); for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ if(mp[i][j] == '@') ans = dfs(i, j); } } printf("%d\n", ans); } return 0; }
|