赛氪OJ-专注于算法竞赛的在线评测系统 (saikr.com)
#include <bits/stdc++.h>
using namespace std;
int n, m, k;
int g[110][110];
int vis[110][110];
int cnt;
void dfs(int x, int y, int step) {
if (g[x][y] != '#')
g[x][y] = '?';
if (step == k)
return;
dfs(x + 1, y, step + 1);
dfs(x, y + 1, step + 1);
dfs(x - 1, y + 1, step + 1);
dfs(x, y - 1, step + 1);
}
int main() {
cin >> n >> m >> k;
for (int i = 1 + 249; i <= n + 249; i++) {
for (int j = 1 + 249; j <= m + 249; j++) {
cin >> g[i][j];
}
}
//找水域
for (int i = 1 + 249; i <= n + 249; i++) {
for (int j = 1 + 249; j <= m + 249; j++) {
if (g[i][j] == '#') {
dfs(i, j, 0);
}
}
}
for (int i = 1; i <= 500; i++) {
for (int j = 1; j <= 500; j++) {
if (g[i][j] == '?') {
cnt++;
}
}
}
cout << cnt << endl;
return 0;
}