用 Python 编写程序,查找球在网格框中的位置

pythonserver side programmingprogramming更新于 2025/11/30 15:40:17

假设我们有一个 m x n 的网格框,其中每个单元格都有一个棋盘,棋盘的位置要么从右上到左下,要么从左上到右下。现在,从顶部单元格将一个球放入框中,我们必须检查该球是否到达框的底部。网格以矩阵形式给出。如果单元格标记为 1,则对角线棋盘从左上到右下;如果标记为 -1,则从右上角到左下角。如果将 n 个球放入盒子中,我们必须找出有多少个球到达底部。

3x3 网格框的示例。

因此,如果输入像 mat =

111-1
-111
1-1-1
1-11
1-11

则输出将为 [-1, -1, -1, -1]

要解决此问题,我们将遵循以下步骤 −

  • i := mat 的行数

  • j := mat 的列数

  • res := 一个新列表

  • 对于 0 到 j 范围内的 val,执行

    • x := val

    • 对于 0 到 i 范围内的 r,执行

      • s := mat[r, x]

      • x := x + mat[r, x]

      • 如果 x < 0 或 x >= j 或 mat[r, x] 与 s 不同,则

        • 在 res 末尾添加元素 -1

        • 退出循环

    • 否则,

      • 在 res 末尾添加 x

  • 返回 res

示例

让我们看看下面的实现以便更好地理解

def solve(mat):
   i, j = map(len, (mat, mat[0]))
   res = []
   for val in range(j):
      x = val
      for r in range(i):
         s = mat[r][x]
         x += mat[r][x]
         if x < 0 or x >= j or mat[r][x] != s:
            res += [-1]
            break
      else:
         res += [x]
   return res

print(solve([[1, 1, 1, -1], [-1, 1, 1, -1], [1, -1, -1, 1],[1, -1, 1, -1] ]))

输入

[[1, 1, 1, -1], [-1, 1, 1, -1], [1, -1, -1, 1],[1, -1, 1, -1] ]

输出

[-1, -1, -1, -1]

相关文章


有用资源