学习了一种新的消元方法。
一些题目在主对角线上的元素行数不多(假设有k斜行),可以优化。
如下面,有一矩阵:
1 1 0 0 0 0
1 1 1 0 0 0
1 1 1 1 0 0
1 1 1 1 1 0
1 1 1 1 1 1
1 1 1 1 1 1
第一行消完后变成:
1 1 0 0 0 0
0 1 1 0 0 0
0 1 1 1 0 0
0 1 1 1 1 0
0 1 1 1 1 1
0 1 1 1 1 1
第二行消完后变成:
1 1 0 0 0 0
0 1 1 0 0 0
0 0 1 1 0 0
0 0 1 1 1 0
0 0 1 1 1 1
0 0 1 1 1 1
实际上,每次只需要消两行,所以时间复杂度为O(n^2)
如果主对角线斜行上/下分别有a/b个元素,则消元复杂度为O(max(n^2,min(a,b)^2*n))的。
回到这道题。