[蓝桥杯] 移动距离 代码解析(Python 实现)

w, m, n = map(int,input().split())#输入列宽及两个楼号
y = max(m,n)//w + 1#直接目的是求出最大的楼号的所在行数
matrix = []
res = []
for i in range(y):#共遍历 y 行,i=0 → i=(y-1)
    temp = [j for j in range(w*i+1, w*(i+1)+1)]
    #遍历所有列,如 i=0 时,range(1,w+1),共 w 列
    if i%2 == 0:
        matrix.append(temp)
    else:
        temp = temp[::-1]
        matrix.append(temp)#从第 0 行开始,偶数行正序,奇数行倒序
    if m in temp:
        res.append([temp.index(m),i])
    if n in temp:
        res.append([temp.index(n),i])
        #如果在遍历中发现了 m 和 n ,那么返回他们的列数 index( ) 和行数 i 。返回至 res = [[列,行],[列,行]]
print(abs(res[0][1]-res[1][1]) + abs(res[0][0]-res[1][0]))#行数相减+列数相减,取个绝对值,完成

 源代码来自d_l_w_d_l_w的博客_小董_不长肉_CSDN博客-力扣,2021蓝桥杯,2022蓝桥杯领域博主

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑建宇Jy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值