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

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告