Python程序:查找球落在网格盒中的位置
假设我们有一个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 := 一个新的列表
对于val从0到j,执行:
x := val
对于r从0到i,执行:
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]
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP