Привет, ребята! Вслед за предыдущим постом, сегодня мы собираемся попрактиковаться в двухмерном массиве! Ниже ссылка на последнюю сессию.



Всегда лучше, когда вопросы решаешь сам!

[Вопрос] Используйте приведенный ниже код, поставьте цифры как в образце и распечатайте его на консоли.

int[][] two = new int[5][5];

Образец 1. Змея

25  24  23  22  21
16  17  18  19  20
15  14  13  12  11
6   7   8   9   10
5   4   3   2   1 

Итак, числа идут так,

Ответ ниже.

Как вы видите, если индекс строки был четным числом или 0, числа увеличиваются слева, а если это нечетное число, числа увеличиваются справа. Итак, сначала я сделал так, чтобы цикл for переходил от последней строки к первой строке, и если остаток строки, разделенный на 2, равен 0, индекс столбца становится меньше. Если это не так, индекс становится больше.

Образец 2. Улитка

1   2   3   4   5
16  17  18  19  6
15  24  25  20  7
14  23  22  21  8
13  12  11  10  9

Ответ ниже.

Как вы видите на картинке выше, я нанес разные цвета на каждые две стрелки. Каждые две стрелки я буду рассматривать как группу.

Итак, вы видите на первой фиолетовой стрелке 5 цифр, а на второй 4. И на первой зеленой стрелке 4 цифры, а на второй 3…. Так что все вторая стрелка становится на одну меньше!

Поэтому я объявил переменную max как 5, то есть число, которое имеет первая фиолетовая стрелка. И я сделал первую переменную j цикла for, начинающуюся с 0 и увеличивающуюся до тех пор, пока она меньше max. Таким образом, первый цикл можно повторить 5 раз.

И поскольку индекс строки равен 0 в первом цикле, я просто помещаю переменную row, которая объявлена ​​как 0, в скобках впереди, а в скобках позади я помещаю переменную col , но перед этим я сделал col в col+move, поэтому он может начинаться с 0 и увеличиваться на единицу при каждом повторении цикла for. Таким образом, в конце первого цикла col будет 4.

И после завершения первого цикла for я сделал max на единицу меньше. Таким образом, на второй фиолетовой стрелке можно сохранить только 4 числа. И на этот раз я превратил row в row+move, чтобы строка могла начинаться с 1 (потому что в прошлый раз она была 0) и увеличивалась на единицу каждый раз, когда повторяется цикл for.

Но э-э-э... Теперь на первой зеленой стрелке строка должна уменьшаться на единицу, а на второй зеленой стрелке столбец должен каждый раз уменьшаться на единицу! Что нам здесь делать?

Я умножил -1 на переменную move, поэтому ход стал -1! И сделал первые два цикла for во вложенные циклы, чтобы их можно было повторять до тех пор, пока массив не заполнится! Когда желтые стрелки запустятся, move будет снова умножено на -1, так что оно вернется к 1! И я добавил, что переменная i становится больше, пока она меньше 5, что является номером группы стрелок!

Вау, это было много, чтобы принять! Надеюсь, вам всем понравилась наша небольшая практика сегодня, спасибо, что прочитали мой пост! Увидимся в следующий раз!