求大佬指点!!!!!!!!!!!

14. 对角元素之和

题目ID:6000必做题50分

最新提交:

Wrong Answer

0 分

历史最高:

Wrong Answer

0 分

时间限制: 1000ms

空间限制: 524288kB

题目描述

给定一个n*n的矩阵,输出它的主对角线和副对角线的和

输入格式

第一行包括一个整数n
接下来n行输出一个矩阵,矩阵中每个元素值不超过10

输出格式

输出两行,第一行是主对角线元素之和(左上~右下),第二行是副对角线元素之和。具体格式见样例输出。(右上~左下)

样例

Input 1

7 1 7 0 5 0 0 2 1 6 1 0 5 1 1 2 8 1 1 7 1 7 5 5 2 8 6 1 8 1 8 3 1 0 4 0 2 6 5 5 8 8 7 1 8 6 7 6 3 7

Output 1

s1=31 s2=28

样例解释

样例输入中,n=7,给定的矩阵为
1 7 0 5 0 0 2
1 6 1 0 5 1 1
2 8 1 1 7 1 7
5 5 2 8 6 1 8
1 8 3 1 0 4 0
2 6 5 5 8 8 7
1 8 6 7 6 3 7
主对角线元素之和为1+6+1+8+6+4+7=31,副对角线元素之和为2+5+1+1+5+2+1=28

数据范围

1<=n<=101<=n<=10

2 个赞

核心代码

for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			if(j==i){
				any+=abs(a[i][j]);
			}
		}
	}
	for(int j=0;j<n;j++){
		for(int i=0;i<n;i++){
			if(j+i==n-1){
				sum+=abs(a[i][j]);
			}
		}
	}

AC了给解决方案!!!!!!!!!

2 个赞

我还是不会:sob::sob::sob:

输入

int n,sum=0,any=0;
	cin>>n;
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			cin>>a[i][j];
		}
	}
2 个赞

输出

    cout<<"s1="<<any<<endl;
	cout<<"s2="<<sum<<endl;
3 个赞

#include<bits/stdc++.h>
using namespace std;
int a[1005][1005];
int main(){
int n,sum=0,any=0;
cin>>n;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(j==i){
any+=abs(a[i][j]);
}
}
}
for(int j=0;j<n;j++){
for(int i=0;i<n;i++){
if(j+i==n-1){
sum+=abs(a[i][j]);
}
}
cout<<“s1=”<<any<<endl;
cout<<“s2=”<<sum<<endl;
}
return 0;
}
还是不对:sob:

1 个赞

格式化一下

2 个赞

输出在for循环外面

2 个赞

你就像对角线都是形如 G[i][i] 的样式的,而副对角线是形如 G[i][n-i+1] 的样式的,就比如当 n=7 时对角线原素之和 =G[1][1]+G[2][2]+G[3][3]+G[4][4]+G[5][5]+G[6][6]+G[7][7] 而副对角线元素之和 =G[1][7]+G[2][6]+G[3][5]+G[4][4]+G[5][3]+G[6][3]+G[7][1] 其实就是简单的找规律

自己在理解一下,
要是懂了并且过了,给个解决方案:folded_hands:

2 个赞