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