
The utilization of 2-dimensional arrays or matrices is extremely advantageous for severalapplications. Matrix rows and columns are used to hold numbers. We can define 2D在C++中使用多维数组来表示矩阵。在本文中,我们将看看如何实现use C++ to calculate the diagonal sum of a given square matrix.
The matrices have two diagonals, the main diagonal and the secondary diagonal (sometimesreferred to as major and minor diagonals). The major diagonal starts from the top-leftcorner (index [0, 0]) to the bottom-right corner (index [n-1, n-1]) where n is the order of the正方形矩阵。主对角线从右上角(索引[n-1, 0])开始,到左下角corner (index [0, n-1]). Let us see the algorithm to find the sum of the elements along withthese two diagonals.
Matrix Diagonal Sum
的中文翻译为:
矩阵对角线之和
$$begin{bmatrix}8 & 5& 3newline6 & 7& 1newline2 & 4& 9\end{bmatrix},$$
Sum of all elements in major diagonal: (8 + 7 + 9) = 24Sum of all elements in minor diagonal: (3 + 7 + 2) = 12
In the previous example, one 3 x 3 matrix was used. We have scanned the diagonalsindividually and calculated the sum. Let us see the algorithm and implementation for a clearview.
Algorithm
读取矩阵 M 作为输入考虑 M 具有 n 行和 n 列sum_major := 0sum_minor := 0对于i从0到n-1的范围,执行for j rangign from 0 to n – 1, doif i and j are the same, thensum_major := sum_major + M[ i ][ j ]end ifif (i + j) is same as (N – 1), thensum_minor := sum_minor + M[ i ][ j ]end ifend forend forreturn sum
Example
#include #include #define N 7using namespace std;float solve( int M[ N ][ N ] ){ int sum_major = 0; int sum_minor = 0; for ( int i = 0; i < N; i++ ) { for ( int j = 0; j < N; j++ ) { if( i == j ) { sum_major = sum_major + M[ i ][ j ]; } if( (i + j) == N - 1) { sum_minor = sum_minor + M[ i ][ j ]; } } } cout << "The sum of major diagonal: " << sum_major << endl; cout << "The sum of minor diagonal: " << sum_minor << endl;}int main(){ int mat1[ N ][ N ] = { {5, 8, 74, 21, 69, 78, 25}, {48, 2, 98, 6, 63, 52, 3}, {85, 12, 10, 6, 9, 47, 21}, {6, 12, 18, 32, 5, 10, 32}, {8, 45, 74, 69, 1, 14, 56}, {7, 69, 17, 25, 89, 23, 47}, {98, 23, 15, 20, 63, 21, 56}, }; cout << "For the first matrix: " << endl; solve( mat1 ); int mat2[ N ][ N ] = { {6, 8, 35, 21, 87, 8, 26}, {99, 2, 36, 326, 25, 24, 56}, {15, 215, 3, 157, 8, 41, 23}, {96, 115, 17, 5, 3, 10, 18}, {56, 4, 78, 5, 10, 22, 58}, {85, 41, 29, 65, 47, 36, 78}, {12, 23, 87, 45, 69, 96, 12} }; cout << "nFor the second matrix: " << endl; solve( mat2 );}
输出
For the first matrix: The sum of major diagonal: 129The sum of minor diagonal: 359For the second matrix: The sum of major diagonal: 74The sum of minor diagonal: 194
Conclusion
In this article, we have seen how to calculate the diagonal sums of a given square matrix.主对角线从左上角延伸到右下角,而副对角线则从左下角延伸到右上角斜线从右上角开始到左下角。要找到这些的总和diagonal elements, we loop through all elements. When both row and column index values相同,它表示主对角线元素,当两个索引的和为与矩阵的阶数n-1相同,它将添加到副对角线上procedure takes two nested loops and we are traversing through all elements present in the2D数组。因此,计算两条对角线的和将花费O(n2)的时间给定的矩阵。
以上就是C++程序计算矩阵对角线之和的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1444613.html
微信扫一扫
支付宝扫一扫