用 Python 编写程序,查找球在网格框中的位置
pythonserver side programmingprogramming更新于 2025/11/30 15:40:17
假设我们有一个 m x n 的网格框,其中每个单元格都有一个棋盘,棋盘的位置要么从右上到左下,要么从左上到右下。现在,从顶部单元格将一个球放入框中,我们必须检查该球是否到达框的底部。网格以矩阵形式给出。如果单元格标记为 1,则对角线棋盘从左上到右下;如果标记为 -1,则从右上角到左下角。如果将 n 个球放入盒子中,我们必须找出有多少个球到达底部。

3x3 网格框的示例。
因此,如果输入像 mat =
| 1 | 1 | 1 | -1 |
| -1 | 1 | 1 | |
| 1 | -1 | -1 | |
| 1 | -1 | 1 | |
| 1 | -1 | 1 |
则输出将为 [-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]
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

