Python程序:求矩阵对角线之和


假设我们有一个方阵;我们需要找到矩阵对角线的和。因此,只包括主对角线和次对角线上所有元素的和,忽略交叉元素。

例如,输入为:

10596
81532
38123
21173

则输出将是:主对角线元素为[10,15,12,3],和为40;次对角线元素为[6,3,8,2],和为19;因此总和为59。

为了解决这个问题,我们将遵循以下步骤:

  • m := 矩阵的行数

  • 如果m等于1,则

    • 返回matrix[0, 0]

  • count := 0

  • 对于 i 从0到m-1,执行:

    • count := count + matrix[i, i]

    • count := count + matrix[i, (-1 - i)]

  • 如果m是奇数,则

    • ind := m/2 的商

    • count := count - matrix[ind, ind]

  • 返回count

示例 (Python)

让我们来看下面的实现来更好地理解:

 在线演示

def solve(matrix):
   m = len(matrix)
   if m == 1: return matrix[0][0]

   count = 0
   for i in range(m):
      count += matrix[i][i]
      count += matrix[i][-1 - i]

   if m % 2 == 1: count -= matrix[m // 2][m // 2]

   return count

matrix = [[10,5,9,6],[8,15,3,2],[3,8,12,3],[2,11,7,3],]
print(solve(matrix))

输入

[[10,5,9,6],[8,15,3,2],[3,8,12,3],[2,11,7,3]]

输出

59

更新于:2021年5月17日

9K+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告