Перебор двойного массива

118
01 марта 2021, 23:30

Задан двойной массив в котором по рандомно появляется единица. Необходимо изменить на единицу все значения справа от единицы за один раз можно менять только одно значение. Моя проблема в том что цикл меняет правое значение на 1 и меняет правое от него. Возможно ли сделать так что бы цикл сначала нашел все единицы в массиве а потом поменял значение справа от них на 1? Целью задания является узнать за сколько повторений цикл заполнит необходимые элементы.

 int h = 1;
    while (h < 5) {
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                if (array[i][j] == 1) {
                    if (j < (M - 1)) {
                        array[i][j + 1] = 1;
                    }
                }
            }
        }
        h++;
    }
Answer 1

Во внутреннем цикле обходи справа налево и смотри налево, тогда не будешь "наступать" на только что измененный элемент.

    int[] arr = new int[]{0, 1, 2, 0, 0};
    for (int i = arr.length - 1; i > 0; i--) {
        if (arr[i - 1] == 1)
            arr[i] = 1;
    }
    System.out.println(Arrays.toString(arr));
READ ALSO
Локализация пакетов

Локализация пакетов

Есть три класса A, B, CКаждый класс лежит в своем Maven модуле

107
Jackson. Сериализация объектов

Jackson. Сериализация объектов

Я хочу сериализовать объект в json строку

110
Spring и thymeleaf

Spring и thymeleaf

Хочу вывести значения базы данных на страницу ввиде таблицы id, name, email, не получаетсяКто знает, скажите как сделать правильно, потому что выдает...

101
Что означает точка в Java?

Что означает точка в Java?

Что за имена с точкой в java printeraccept()?

96