灌溉

题目描述

小蓝负责花园的灌溉工作 花园可以看成一个n行m列的方格图形。中间有一部分位置上安装有出水管 小蓝可以控制一个按钮同时打开所有的出水管,打开时,有出水管的位置可以被认为已经灌溉好 每经过一分钟,水就会向四面扩展一个方格,被扩展到的方格可以被认为已经灌溉好。即如果前一分钟某一个方格被灌溉好,则下一分钟它上下左右的四个方格也被灌溉好 给定花园水管的位置,请问k分钟后,有多少个方格被灌溉好?

输入描述

输入的第一行包含两个整数n,m。 第二行包含一个整数t,表示出水管的数量 接下来t行描述出水管的位置,其中第行包含两个数rc表示第r行第c列有一个排水管。 接下来一行包含一个整数 k。 其中,1<=n,m<=100,1<=t<= 10,1<= k<=100.

输出描述

输出一个整数,表示答案

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
n,m = map(int,input().split())
t = int(input())
a = [[0 for i in range(m)] for j in range(n)] #初始的方格
b = [[0 for i in range(m)] for j in range(n)] #灌溉后的方格
for i in range(t):
r,c = map(int,input().split())
a[r-1][c-1] = 1 #初始化出水口
k = int(input())
#遍历
for k in range(k,0,-1): #一分钟灌溉一次
for i in range(n):
for j in range(m):
if a[i][j]==1:
b[i][j]=1 #中心值标记
if i-1>=0: #合格范围编辑四个方向的水管
b[i-1][j]=1
if i+1<n:
b[i+1][j]=1
if j-1>=0:
b[i][j-1]=1
if j+1<m:
b[i][j+1]=1
a = b #灌溉完毕递归下一次
#输出
cnt = 0
for i in b:
for j in i:
cnt += j
print(cnt)

灌溉
https://ianwusb.blog/2024/03/26/灌溉/
作者
Ianwusb
发布于
2024年3月26日
许可协议