今天做leetcode周赛碰到一个判断三点共线的问题,好在数学系的我马上反应到了行列式,然鹅行列式展开来那么多项,,输错好几次的我直接判了三次罚时,凉凉
趁空闲写了个纯py递归计算行列式的程序,兴许以后用的到??
# 纯python递归计算行列式
def det(array:list) -> int:
"""
type array : List[List[float]]
"""
assert len(array) == len(array[0])
if len(array) == 1:
return array[0][0]
# 沿第一列展开
s = 0
for i in range(len(array)):
# 余子式
A = [array[j][1:] for j in range(len(array)) if j != i]
print(A)
if i % 2:
s -= array[i][0] * det(A)
else:
s += array[i][0] * det(A)
return s
l = [[2,2,2],[2,2,9],[3,6,3]]
print(det(l))