鱼C论坛

 找回密码
 立即注册
查看: 1187|回复: 1

[已解决]一个矩阵内给定两个坐标,截取两个坐标点内可以形成的矩形

[复制链接]
发表于 2021-11-19 08:45:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 欺Ran 于 2021-11-19 10:15 编辑

一个矩阵内给定两个坐标,截取两个坐标点内可以形成的矩形
请用loop完成
不能用到break/continue.
例子:
[[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]]

给定坐标(1, 1), (2, 2)
返回[[6, 7], [10, 11]]
给定坐标(0, 0), (3, 0)
返回[[1], [5], [9], [13]]
给定坐标(0, 3), (0, 0)
返回[[1, 2, 3, 4]]
最佳答案
2021-11-19 09:54:18
  1. def test(cd1, cd2):
  2.     matrix = [[1, 2, 3, 4],
  3.               [5, 6, 7, 8],
  4.               [9, 10, 11, 12],
  5.               [13, 14, 15, 16]]
  6.     result = []
  7.     rmi = min(cd1[0], cd2[0])
  8.     rma = max(cd1[0], cd2[0])
  9.     cmi = min(cd1[1], cd2[1])
  10.     cma = max(cd1[1], cd2[1])
  11.     r = rmi
  12.     while r <= rma:
  13.         result.append(matrix[r][cmi:cma + 1])
  14.         r += 1
  15.     print(result)


  16. test([1, 1], [2, 2])
  17. test([0, 0], [3, 0])
  18. test([0, 3], [0, 0])
复制代码
  1. def test(cd1, cd2):
  2.     matrix = [[1, 2, 3, 4],
  3.               [5, 6, 7, 8],
  4.               [9, 10, 11, 12],
  5.               [13, 14, 15, 16]]
  6.     result = []
  7.     rmi = min(cd1[0], cd2[0])
  8.     rma = max(cd1[0], cd2[0])
  9.     cmi = min(cd1[1], cd2[1])
  10.     cma = max(cd1[1], cd2[1])
  11.     for m in matrix[rmi:rma + 1]:
  12.         result.append(m[cmi:cma + 1])
  13.     print(result)


  14. test([1, 1], [2, 2])
  15. test([0, 0], [3, 0])
  16. test([0, 3], [0, 0])

复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-19 09:54:18 | 显示全部楼层    本楼为最佳答案   
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-3 08:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表