Добавление диагональных значений в двумерный массив - PullRequest
2 голосов
/ 04 июля 2011

У меня есть следующий 2d массив

        int [][] array = {{ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9},
                          {10, 11, 12, 13, 14, 15, 16, 17, 18, 19},
                          {20, 21, 22, 23, 24, 25, 26, 27, 28, 29},
                          {30, 31, 32, 33, 34, 35, 36, 37, 38, 39},
                          {40, 41, 42, 43, 44, 45, 46, 47, 48, 49},
                          {50, 51, 52, 53, 54, 55, 56, 57, 58, 59},
                          {60, 61, 62, 63, 64, 65, 66, 67, 68, 69},
                          {70, 71, 72, 73, 74, 75, 76, 77, 78, 79},
                          {80, 81, 82, 83, 84, 85, 86, 87, 88, 89},
                          {90, 91, 92, 93, 94, 95, 96, 97, 98, 99}};

У меня есть этот код, чтобы найти сумму всех значений в массиве.Как я могу изменить его, чтобы добавить только диагональные значения, начиная с 0 (0 + 11 + 22 + 33 и т. Д.)?

 public static int arraySum(int[][] array)
{
    int total = 0;

    for (int row = 0; row < array.length; row++)
    {
        for (int col = 0; col < array[row].length; col++)
            total += array[row][col];
    }

    return total;
}

Ответы [ 12 ]

0 голосов
/ 13 апреля 2018

Решение:

int total = 0;
for (int row = 0; row < array.length; row++)
{
    total += array[row][row] + array[row][array.length - row - 1];
}

System.out.println("FINAL ANSWER: " + total);
0 голосов
/ 05 марта 2018

Решение в PHP.Логика точно такая же, что уже выложена здесь.Это только в PHP отличается.

<?php

$handle = fopen ("php://stdin", "r");
function diagonalDifference($a) {
    $sumA = [];
    $sumB = [];

    $n = count($a);

    for ($i = 0; $i < $n; $i++) {
        for ($j = 0; $j < $n; $j++) {
            if ($i === $j) {
                $sumA[] = $a[$i][$j];
            }

            if ($i + $j == count($a) -1 ) {
                $sumB[] = $a[$i][$j];
            }
        }
    }

    $sum1 = array_sum($sumA);
    $sum2 = array_sum($sumB);

    return abs($sum1 - $sum2);
}

fscanf($handle, "%i",$n);
$a = array();
for($a_i = 0; $a_i < $n; $a_i++) {
    $a_temp = fgets($handle);
    $a[] = explode(" ",$a_temp);
    $a[$a_i] = array_map('intval', $a[$a_i]);
}
$result = diagonalDifference($a);
echo $result . "\n";
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...