数组总和(查找所有对角元素和边界元素的和)

时间:2019-11-13 12:38:42

标签: arrays string matrix 2d

给出阶次为'n'的二维正方形矩阵,找到对角线元素和所有边界元素的总和。边界元素是指存在于矩阵所有四个边界上的元素。

任何人都可以用Java编写此代码吗? 数组的大小将始终为N * N。

enter image description here

给出5 * 5数组
8 18 18 1 10

12 3 13 6 19

17 11 18 10 19

10 13 12 11 14

3 1 19 11 1

输出:232

2 个答案:

答案 0 :(得分:0)

为了实现所需的功能,您应该了解矩阵的一些有趣属性。

  1. 可以使用称为第一行的上限:
for (int i = ; i < n; i ++ )
  sum += matrix[0][i]

这意味着您正在遍历第一行的每个元素。

2。然后,您应该尝试对矩阵的第一列执行相同的操作,代码将如下所示:

for (int i = ; i < n; i ++ )
  sum += matrix[i][0]

对于最后一行或最后一列,您必须将0替换为n-1并完成工作。尝试使用这些索引,看看发生了什么。

有用的链接:https://www.go4expert.com/forums/border-elements-matrix-t33678/

主对角线有一个有趣的性质,即i等于j。例如,在平方矩阵中,主对角线的元素位于0,0-1,1-2,2的位置,依此类推...

browse all rows
  browse all cells
    if i == j (is in main diagonal):
        increase one sum
    if i == n - j + 1 (the other diagonal)
        increase the second sum

第二个对角线的公式是i应该等于n-j + 1。

看到这个问题 calculate the sum of diagonals in a matrix

答案 1 :(得分:0)

我已经解决了这个问题,这是解决方案

导入java.util.Scanner;

公共类主要{

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int M = sc.nextInt();
    int[][] arr = new int[M][M];
    for (int row = 0; row < M; row++) {
        for (int col = 0; col < M; col++) {
            arr[row][col] = sc.nextInt();
        }
    }
    int boundrySum = 0, requiredSum = 0;
    for (int row = 0; row < M; row++) {
        for (int col = 0; col < M; col++) {
            if (row == 0 || col == 0 || row == M - 1 || col == M - 1) {
                boundrySum = boundrySum + arr[row][j];
            }
        }
    }
    int diagonal1Sum = 0, diagonal2Sum = 0;
    for (int row = 0; row < M; row++) {
        for (int col = 0; col < M; col++) {
            if (row == col)
                diagonal1Sum = diagonal1Sum + arr[row][col];

            else if ((row + col) == (M - 1))
                diagonal2Sum = diagonal2Sum + arr[row][col];
        }
    }
    requiredSum = boundrySum + diagonal1Sum + diagonal2Sum
            - (arr[0][0] + arr[0][M - 1] + arr[M - 1][0] + arr[M - 1][M - 1]);
    System.out.println(requiredSum);
}

}