找出特殊矩阵元素的总和的 C++ 代码


假设我们给出了一个 n * n 维度的方阵。矩阵中的以下值称为特殊元素 -

  • 主对角线上的值。

  • 第二对角线上的值。

  • 在其上方具有精确 (n - 1 / 2) 行并在其下方具有相同行数的行中的值。

  • 在其左侧和右侧具有精确 (n - 1 / 2) 列的列中的值。

我们在矩阵中找出这些特殊值之和。

因此,如果输入如下 n = 4,mat = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}},则输出将为 107。

步骤

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

res := 0
for initialize i := 0, when i < n, update (increase i by 1), do:
   for initialize j := 0, when j < n, update (increase j by 1),
do:
   if i is same as j or i is same as n / 2 or j is same as n/ 2 or i + j is same as n - 1, then:
      res := res + mat[i, j]
print(res)

示例

让我们看看以下实现以获得更好的理解

#include <bits/stdc++.h>
using namespace std;
#define N 100
void solve(int n, vector<vector<int>> mat) {
   int res = 0;
   for (int i = 0; i < n; i++)
   for (int j = 0; j < n; j++){
      if (i == j || i == n / 2 || j == n / 2 || i + j == n - 1)
         res += mat[i][j];
   }
   cout << res << endl;
}
int main() {
   int n = 4;
   vector<vector<int>> mat = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}};
   solve(n, mat);
   return 0;
}

输入

4, {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}}

输出

107

更新于:11-Mar-2022

396 次浏览

开始你的 职业生涯

完成课程获得认证

入门
广告