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
廣告