C++中求解方阵两条对角线行公共元素


给定一个二维方阵作为输入。目标是找到其主对角线和副对角线上共有的元素。如果输入矩阵为:

1 2 3
2 2 4
1 4 7

则其主对角线为1 2 7,副对角线为3 2 1。公共元素为2。

两者之间总是至少有一个公共元素。

示例

输入 − Matrix[][5] = {{1, 2, 1}, {4, 1, 6}, {1, 8, 1}};

输出 − 对角线行公共元素:3

解释 − 矩阵为:

1 2 1
4 1 6
1 8 1

主对角线=1 1 1,副对角线= 1 1 1

所有3个值都是公共的。计数=3

输入 − Matrix[][5] = {{1, 4, 4, 1}, {3, 4, 4, 6}, {1, 1, 1, 4}, {1, 9, 9, 2}};

输出 − 对角线行公共元素:3

解释 − 矩阵为:

1 4 4 1
3 4 4 6
1 1 1 4
1 9 9 2

主对角线=1 4 1 2,副对角线= 1 4 1 1

前3个值是公共的。计数=3

下面程序中使用的算法如下:

在这个方法中,我们将首先从第0行开始逐行遍历方阵。对于每一行,检查元素M[i][i]是否等于M[i][size-i-1]。如果是,则它是两个对角线的公共元素,计数加1。

  • 输入矩阵Matrix[][5]。

  • 设置其大小。

  • 函数countElement(int mt[][5], int size)接收输入矩阵及其大小,并返回主对角线和副对角线中公共值的个数。

  • 将初始计数设置为0。

  • 使用for循环从i=0遍历到i

  • 如果mt[i][i] == mt[i][size-i-1],则计数加1。

  • 最后返回计数作为结果。

  • 在main函数中打印结果。

示例

#include <iostream>
using namespace std;
int countElement(int mt[][5], int size){
   int count = 0;
   for (int i=0;i<size;i++){
      if (mt[i][i] == mt[i][size-i-1]){
         count=count+1;
      }
   }
   return count;
}
int main(){
   int Matrix[][5] = {{1, 2, 1}, {4, 1, 6}, {1, 8, 1}};
   int size=3;
   cout<<"Row-wise common elements in diagonals:"<<countElement(Matrix, size);
   return 0;
}

输出

如果我们运行上面的代码,它将生成以下输出:

Row-wise common elements in diagonals:3

更新于:2021年11月3日

浏览量:195

开启你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.