Задача
Напишите программу, заполняющую массив [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] лежит выше побочной диагонали.
Далее заполняем массив в соответствии с введеными обозначениями и условием задачи, а затем выводим его на экран. Задача решена.
