灌溉|蓝桥杯
https://www.lanqiao.cn/problems/551/learning/
代码
#include <iostream>
using namespace std;
int dir[4][2] = { {1,0},{-1,0},{0,1},{0,-1} };
int book[101][101];
int squ[101][101];
int k,m,n;
int ans = 0;
void dfs(int x, int y,int step)
{
if (step> k) return ;
for (int i = 0; i < 4; i++)
{
int nx = x + dir[i][0];
int ny = y + dir[i][1];
if (nx>=1 || ny>=1 || nx<=n || ny<=m)
book[nx][ny]++;
dfs(nx, ny, step+1);
}
}
int main()
{
cin >> n >> m;
int t,k;
int x, y;
cin >> t;
while (t--)
{
cin >> x >> y;
squ[x][y] = 1;
book[x][y] = 1;
}
cin >> k;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
if (squ[i][j] == 1)
dfs(i, j, 0);
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
if (book[i][j] >= 1)ans++;
cout << ans;
return 0;
}