A33770. 编程实现在一个 M 行 N 列的网格中放有若干个坚果(一个小格子里最多放一个坚果),第 X 行 Y 列的小格子是小松鼠的家。小松鼠可以向上下左右的格子移动寻找坚果,但它每次从家出发后,最多可以移动 K 个小格子,发现格子中有坚果,就会将其运回家储藏起来(运回家所移动的格子不做计算),然后再从家出发寻找其他坚果。小松鼠最多可以储藏几个坚果。例如:M=7,N=6,X=3,Y=4,K=3,在 7 行 …
填空题
困难
知识点
题目描述
编程实现
在一个 M 行 N 列的网格中放有若干个坚果(一个小格子里最多放一个坚果),第 X 行 Y 列的小格子是小松鼠的家。
小松鼠可以向上下左右的格子移动寻找坚果,但它每次从家出发后,最多可以移动 K 个小格子,发现格子中有坚果,就会将其运回家储藏起来(运回家所移动的格子不做计算),然后再从家出发寻找其他坚果。小松鼠最多可以储藏几个坚果。
例如:M=7,N=6,X=3,Y=4,K=3,在 7 行 6 列的网格中有若干个坚果(如下图),小松鼠的家在第 3 行,第 4 列的位置,最多可以移动 3 个小格。

小松鼠最多可以储藏 7 个坚果(小格子底色为绿色的坚果)。
输入描述
第一行输入两个正整数 M 和 N(2≤M≤30,1≤N≤30),表示 M 行 N 列的网格,两个正整数之间以一个英文逗号隔开;
第二行输入两个正整数 X 和 Y(1≤X≤M,1≤Y≤N),表示小松鼠家的位置在第 X 行第 Y 列,两个正整数之间以一个英文逗号隔开;
第三行输入一个正整数 K(1≤K≤max(M, N)-1),表示小松鼠从家出发后,最多可以移动的小格子数第四行开始,输入 M 行,每行 N 个整数,除了第 X 行 Y 列的小格子用 2 表示小松鼠的家,其他小格子的整数只能是 0 或者 1。0 表示小格子中没有坚果,1 表示小格子中有 1 个坚果,整数之间以一个英文逗号隔开。
输出描述
输出一个整数,表示小松鼠最多可以储藏的坚果数量。
样例输入
7,6
3,4
3
0,0,1,0,1,0
0,0,0,0,1,0
0,1,0,2,0,0
1,0,0,1,0,1
0,0,1,0,0,0
0,0,0,0,0,1
1,0,0,1,0,0
样例输出
7
参考答案
m,n = list(map(int,input().split(',')))
sx,sy = list(map(int,input().split(','))) #松鼠的位置 sx所在行,sy列
sx,sy = sx-1,sy-1
max_steps = int(input())
lst =[]
for row in range(m):
new_line = list(map(int,input().split(',')))
lst.append(new_line)
res = 0
#遍历二维列表:从上到下,从左到右
for x in range(m):
for y in range(n):
dxy= abs(sx-x) + abs(sy-y)
if dxy <= max_steps and lst[x][y]==1:
res +=1
print(res)
上一题
下一题