在C ++中计算总和等于对角线总和的行/列
我们给定一个矩阵,该矩阵是具有行和列的二维数组,任务是计算所有行和列的总和计数,以使其等于主矩阵或辅助矩阵的总和。
输入-
int arr[row][col] = { { 4, 1, 7 }, { 10, 3, 5 }, { 2, 2, 11} }
输出-总和等于对角总和的行/列数为&mins;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(假)。因此,与主对角线和辅助对角线之和匹配的行/列数为−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(真正)。因此,与主对角线和辅助对角线之和匹配的行/列数为−2
以下程序中使用的方法如下
创建二维数组以形成行大小和列大小的矩阵
为主要矩阵和辅助矩阵创建变量。此外,还有一个用于存储计数的计数变量
从i到0直到col和j从col-1直到col开始循环,递增i并递减j
在循环内部,将主体设置为主体+矩阵[i][i],将次要设置为次要+矩阵[i][j]
从i开始循环FOR至0直到col
在循环内,将row设置为0并将col设置为0,然后在循环内,从j到0开始另一个循环,直到col
在循环内部,将行设置为行+矩阵[i][j]
在循环内,从j到0直到col开始另一个循环FOR
在循环内,col到col+matrix[j][i]
在循环内部,检查IF(行==主体)||(行==次要),然后将计数加1
在循环内部,检查IF(col==主体)||(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