Конденсировать массив в номер - PullRequest
1 голос
/ 01 июня 2019

Я пытаюсь решить проблему для своей домашней работы, но я застрял.

Вот задача:

Напишите программу для чтения массива целых чисел и сжатия ихсуммируя соседние пары элементов, пока не получится одно целоеНапример, если у нас есть 3 элемента {2, 10, 3}, мы суммируем первые два и вторые два элемента и получаем {2 + 10, 10 + 3} = {12, 13}, то мы снова суммируем все смежныеэлементы и получить {12 + 13} = {25}.

Это то, что я сделал до сих пор, но я застрял и не знаю, как продолжить.

for (int i = 0; i < arr.length; i++) {
    arr[i] = Integer.parseInt(input[i]);
}

int sum = 0;
int[] condensed = new int [arr.length-1];
System.out.println(condensed.length);

while (condensed.length > 1) {
    for (int i = 0; i < condensed.length; i++) {
        condensed[i] = arr[i] + arr[i+1];
    }   
}

if (condensed.length == 1) {
    sum = condensed[0] + condensed[1];
    System.out.println(sum);
}

Ввод "5 0 4 1 2" и вывод должен быть "35", но я получаю "4".

Ответы [ 2 ]

1 голос
/ 01 июня 2019

Учитывая, что у вас уже есть массив (int arr[]) или преобразователь чисел из входных данных, вы можете непрерывно циклически проходить по массиву от первого элемента к тому, который был до последнего, добавляя это значение к следующему значению и сохраняя их ввременный массив.

Затем вы замените массив значений временным массивом и продолжите процесс, пока длина массива не станет равной единице.

while (arr.length > 1) {
    int temp[] = new int[arr.length - 1];  

    for (int i = 0; i < arr.length - 1; i++) {
        temp[i] = arr[i] + arr[i + 1];
    }

    arr = temp;
}
0 голосов
/ 01 июня 2019

Я написал пример кода, который вы можете расширить, если у вас возникли проблемы, дайте мне знать:

        int[] a1 = new int[] {2, 10 , 3};
        int[] a2 = new int[2];
        int[] a3 = new int[1];

        for(int i = 0; i < a1.length - 1; i++)
            a2[i] = a1[i] + a1[i + 1];

        for(int i = 0; i < a2.length - 1; i++)
            a3[i] = a2[i] + a2[i + 1];

        System.out.println(a3[0]);

в общем случае вы должны сгенерировать N int массивов (N = arr.length - 1) и заполнитьих с петлей

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...