📅  最后修改于: 2023-12-03 15:23:04.678000             🧑  作者: Mango
已知矩阵M,其中M[i][j]表示第i行第j列的元素。写一个函数来判断矩阵是否是“金字塔矩阵”,即每个元素的值都等于其两个下角元素之和。
def is_pyramid_matrix(M: List[List[int]]) -> bool:
pass
首先,因为要判断每个元素的值都等于其两个下角元素之和,所以必须满足以下两个条件:
满足以上两个条件说明是一个“金字塔矩阵”。
可以通过 for 循环来比较每一个元素是否符合“金字塔矩阵”的要求。
from typing import List
def is_pyramid_matrix(M: List[List[int]]) -> bool:
length = len(M)
# 功能性代码,检查矩阵每行长度是否合法
if length != len(M[0]) or length < 2:
return False
for i in range(1, length):
# 不满足第1个条件
if len(M[i-1]) != len(M[i])-1:
return False
for j in range(len(M[i])):
# 不满足第2个条件
if M[i][j] <= 0:
return False
# 比较,发现不是金字塔矩阵
if j - 1 >= 0 and M[i][j] != M[i-1][j-1] + M[i-1][j]:
return False
# 如果没有返回,说明是金字塔矩阵
return True
函数 is_pyramid_matrix 的实现如上。
为了确保程序的稳定性,针对以下情况进行了测试:
# 测试1
M = [[1], [2, 3]]
print(is_pyramid_matrix(M)) # False
# 测试2
M = [
[1, 2],
[3],
[4, 5, 6],
[7, 8, 9, 10],
]
print(is_pyramid_matrix(M)) # False
# 测试3
M = [
[1],
[2, 3],
[4, 5, 6],
[7, 8, 9, 10],
[11, 12, 13, 14, 15],
]
print(is_pyramid_matrix(M)) # True
# 测试4
M = [
[1],
[2, 4],
[3, 6, 5, 2],
[4, 2, 2, 2, 6, 7],
[5, 4, 1, 9, 7, 8, 5],
]
print(is_pyramid_matrix(M)) # False
输出结果:
False
False
True
False
如果输出结果和我们预期的结果相同,则说明代码实现是正确無误的。