请写一个程序,对于m行n列的(1<m<10)的方阵,求其每一行,每一列及主对角线元素之和,最后按照从大到小的顺序一次输出。
输入说明:共一组数据,输入的一行为一个正整数,表示m,接下来的m行,每行m个整数表示方阵元素。
输出说明:从大到小排列的一行整数,每个整数后跟一个空格,最后换行。
输入样本:
4
15 8 -2 6
31 24 18 71
-3 -9 27 13
17 21 38 69
输出样本:
159 145 144 135 81 60 44 32 28 27
#include "iostream"
#include "algorithm"
#include "cstring"
using namespace std;
int main(){
int m;
cin>>m;
int str[m][m];
for(int i=0;i<m;i++)
for(int j=0;j<m;j++){
cin>>str[i][j];
}//输入矩阵
int t = 2*m+2;
int a[t];
memset(a,0,sizeof(a));
for(int i=0;i<m;i++){
for(int j=0;j<m;j++){
a[i] += str[i][j];
}
for(int r=0;r<m;r++){
a[i+m] += str[r][i];
}
}
for(int i=0;i<m;i++){
a[2*m]+=str[i][i];
a[2*m+1]+=str[i][m-1-i];
}
sort(a,a+2*m+2);
for(int i=2*m+1;i>=0;i--){
cout<<a[i];
if(i>0)
cout<<"_";
else if(i==0)
cout<<endl;
}
}
本文介绍了一个程序设计问题,即对于一个m行n列的方阵,如何计算每一行、每一列及主对角线元素之和,并按从大到小的顺序输出这些和。文章提供了完整的C++代码实现,包括输入矩阵、计算各方向元素和以及排序输出的过程。
321

被折叠的 条评论
为什么被折叠?



