测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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)
上一题 下一题