C++中計算行/列和等於對角線和的行/列數
給定一個矩陣,它是一個具有行和列的二維陣列,任務是計算所有行和列的和,使其等於主對角線或副對角線的和。
輸入 −
int arr[row][col] = {
{ 4, 1, 7 },
{ 10, 3, 5 },
{ 2, 2, 11}
}輸出 − 行/列和等於對角線和的個數為 2
解釋 −
主對角線之和為:4 + 3 + 11 = 18,副對角線之和為:7 + 3 + 2 = 12。行之和為 4 + 1 + 7 = 12(TRUE),10 + 3 + 5 = 18(TRUE),2 + 2 + 11 = 15(FALSE),列之和為:4 + 10 + 2 = 16(FALSE),1 + 3 + 2 = 6(FALSE),7 + 5 + 11 = 23(FALSE)。因此,與主對角線和和副對角線和匹配的行/列計數為 2
輸入 −
int arr[row][col] = {
{ 1, 2, 3 },
{ 4, 5, 2 },
{ 7, 9, 10}
}輸出 − 行/列和等於對角線和的個數為 2
解釋 −
主對角線之和為:1 + 5 + 10 = 16,副對角線之和為:7 + 3 + 5 = 15。行之和為 1 + 2 + 3 = 6(FALSE),4 + 5 + 2 = 11(FALSE),7 + 9 + 10 = 26(FALSE),列之和為:7 + 4 + 1 = 12(FALSE),9 + 5 + 2 = 16(TRUE),3 + 2 + 10 = 15(TRUE)。因此,與主對角線和和副對角線和匹配的行/列計數為 2
下面程式中使用的演算法如下
建立一個二維陣列來形成一個行大小和列大小的矩陣
建立主對角線和副對角線的變數。還有一個計數變數來儲存計數
從 i = 0 到 col,j 從 col - 1 到 col 開始迴圈,遞增 i 並遞減 j
在迴圈內,將 principal 設定為 principal + matrix[i][i],並將 secondary 設定為 secondary + matrix[i][j]
從 i = 0 到 col 開始迴圈 FOR
在迴圈內,將 row 設定為 0,col 設定為 0,在迴圈內,從 j = 0 到 col 開始另一個迴圈 FOR
在迴圈內,將 row 設定為 row + matrix[i][j]
在迴圈內,從 j = 0 到 col 開始另一個迴圈 FOR
在迴圈內,col 設定為 col + matrix[j][i]在迴圈內,檢查 IF (row == principal) || (row == secondary),則將計數加 1
在迴圈內,檢查 IF (col == principal) || (col == secondary),則將計數加 1
返回計數
列印結果。
示例
#include <iostream>
#define row 3
#define col 3
using namespace std;
int diagonal_sum(int matrix[row][col]){
int principal = 0;
int secondary = 0;
int r = 0;
int c = 0;
int count = 0;
int i = 0, j = 0;
for (i = 0, j = col - 1; i < col; i++, j--){
principal += matrix[i][i];
secondary += matrix[i][j];
}
for (int i = 0; i < col; i++){
r = 0;
c = 0;
for (int j = 0; j < col; j++){
r += matrix[i][j];
}
for (int j = 0; j < col; j++){
c += matrix[j][i];
}
if ((r == principal) || (r == secondary)){
count++;
}
if ((c == principal) || (c == secondary)){
count++;
}
}
return count;
}
int main(){
int matrix[row][col] = {
{ 4, 1, 7 },
{ 10, 3, 5 },
{ 2, 2, 11}};
cout<<"Count of rows/columns with sum equals to diagonal sum are: "<<diagonal_sum(matrix);
return 0;
}輸出
如果我們執行上面的程式碼,它將生成以下輸出:
Count of rows/columns with sum equals to diagonal sum are: 2
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP