Задача
Напишите программу, заполняющую массив [latex]n × n[/latex] следующим образом: на побочной диагонали стоят нули, выше диагонали двойки, ниже единицы.
Входные данные
Дано натуральное число [latex]n[/latex] [latex](n \leqslant 20).[/latex]
Выходные данные
Выведите массив, заполненный по указанному правилу.
Тесты
# | Входные данные | Выходные данные |
---|---|---|
1 | 2 | 20 01 |
2 | 3 | 220 201 011 |
3 | 4 | 2220 2201 2011 0111 |
4 | 5 | 22220 22201 22011 20111 01111 |
5 | 10 | 2222222220 2222222201 2222222011 2222220111 2222201111 2222011111 2220111111 2201111111 2011111111 0111111111 |
Код программы
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 |
import java.util.*; import java.lang.*; import java.io.*; class Main { public static void main (String[] args) throws java.lang.Exception { Scanner in = new Scanner(System.in); int n = in.nextInt(); int[][] arr = new int [20][20]; for (int i = 0; i < n; i++){ for (int j = 0; j < n; j++){ if(i + j == n - 1) arr[i][j] = 0; else if (i + j < n - 1) arr[i][j] = 2; else arr[i][j] = 1; } } for (int i = 0; i < n; i++){ for (int j = 0; j < n; j++){ System.out.print(arr[i][j]); } System.out.println(); } } } |
Решение задачи
Для решения задачи создадим двумерный массив, количество строк и столбцов которого не превышают [latex]20.[/latex] Заполнять его будем при помощи двойного цикла, как указано в решении задачи. Введем следующие обозначения:
- [latex]i + j = n — 1,[/latex] если ячейка [latex](i,j)[/latex] лежит на побочной диагонали;
- [latex]i + j > n — 1,[/latex] если ячейка [latex](i,j)[/latex] лежит ниже побочной диагонали;
- [latex]i + j < n — 1,[/latex] если ячейка [latex](i,j)[/latex] лежит выше побочной диагонали.
Далее заполняем массив в соответствии с введеными обозначениями и условием задачи, а затем выводим его на экран. Задача решена.