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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP