题目描述
输入
输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。
输出
在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。
样例输入 Copy
4
2 3 4 1
5 6 1 1
7 1 8 1
1 1 1 1
样例输出 Copy
35
答案:
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
int a[n][n],i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
int sum1=0,sum2=0,sum3=0,sum4=0;
for(i=0;i<n;i++)
sum1+=a[i][n-i-1];
for(i=0;i<n;i++)
sum2+=a[i][n-1];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
sum3+=a[i][j];
for(i=0;i<n;i++)
sum2+=a[n-1][i];
int number=sum3-sum1-sum2-sum4+a[0][n-1]+a[n-1][0]+a[n-1][n-1];
printf("%d",number);
return 0;
}
提示:
不难发现,这题用最单纯的做法不会比优化的做法麻烦多少,需要循环加减的数量很少,直接累加减不会时间超限。