当前位置:   article > 正文

给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。_给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所

给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所

给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。

输入格式:

输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。

输出格式:

在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。

输入样例:

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

输出样例:

35

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB


解题

这道题有两个常见的实现方法,第一个是直接计算。

注意:并非去除最后一行,最后一列和副对角线,而是计算和的时候,不加这三个条件下的数字。

  1. #include <stdio.h>
  2. int main(){
  3. int answer=0,n=0,i=0,j=0;
  4. scanf("%d",&n);
  5. int a[n][n];
  6. for(i=0;i<n;i++)
  7. {
  8. for(j=0;j<n;j++)
  9. {
  10. scanf("%d",&a[i][j]);
  11. if(i!=n-1 && j!=n-1 && j!=n-1-i) //最后一行、最后一列、副对角线的角标
  12. {
  13. answer+=a[i][j];
  14. }
  15. }
  16. }
  17. printf("%d",answer);
  18. return 0;
  19. }

这个方法就比较巧。

然而除此之外,还可以通过观察,比较费眼睛:

其实都一样,也是三个条件,这个更有逻辑一些,可以参考类比一下。

  1. #include<stdio.h>
  2. int main() {
  3. int n;
  4. scanf("%d", &n);
  5. int a[100][100] = { 0 };
  6. for (int i = 0; i < n; i++) {
  7. for (int j = 0; j < n; j++) {
  8. scanf("%d", &a[i][j]);
  9. }
  10. }
  11. int sum = 0;
  12. for (int i = 0; i < n; i++) {
  13. for (int j = 0; j < n; j++) {
  14. if (i + j == n - 1) continue;
  15. if (i == n - 1) continue;
  16. if (j == n - 1) continue;
  17. sum += a[i][j];
  18. }
  19. }
  20. printf("%d", sum);
  21. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/788427
推荐阅读
相关标签
  

闽ICP备14008679号