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