历年蓝桥杯Python青少组中/高级选拔赛(STEMA)真题解析 | 2023年8月编程题(10)

学习Python从娃娃抓起!记录下蓝桥杯备考学习过程中的题目,记录每一个瞬间。
附上汇总贴:历年蓝桥杯Python青少组中/高级选拔赛(STEMA)真题解析 | 汇总


【题目描述】
再一个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 = [int(i) for i in input().split(',')]
x, y = [int(i) for i in input().split(',')]
k = int(input())
a = [[0 for i in range(35)] for j in range(35)]
for i in range(1, m+1):  # 输入矩阵
    ls = [int(i) for i in input().split(',')]
    for j in range(1, n+1):
        a[i][j] = ls[j-1]
cnt = 0
for i in range(1, m+1):  # 枚举矩阵的每个格子
    for j in range(1, n+1):
        if abs(i-x)+abs(j-y)<=k and a[i][j]==1:  # 当格子与小松鼠家的距离不超过k,且为坚果时
            cnt+=1  # 计数器加1
print(cnt)  # 打印结果

【运行结果】

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
  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值