java, ДАМ 30 БАЛІВ
Заполните n мерный квадратный массив числами, которые увеличиваются на 1 по спирали (число n должно задаваться с клавиатуры). Выведите результат на экран с соблюдением ширины столбцов.
Для примера массив 4 на 4 должен выглядеть как указано в примере.
Пример:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
Дополнительно (не обязательно): попробуйте решить только одним циклом.
Answers & Comments
Ответ:
import java.util.Scanner;
public class SpiralMatrix {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter n: ");
int n = scanner.nextInt();
int[][] matrix = new int[n][n];
int rowStart = 0;
int rowEnd = n - 1;
int colStart = 0;
int colEnd = n - 1;
int count = 1;
while (rowStart <= rowEnd && colStart <= colEnd) {
for (int i = colStart; i <= colEnd; i++) {
matrix[rowStart][i] = count++;
}
rowStart++;
for (int i = rowStart; i <= rowEnd; i++) {
matrix[i][colEnd] = count++;
}
colEnd--;
if (rowStart <= rowEnd) {
for (int i = colEnd; i >= colStart; i--) {
matrix[rowEnd][i] = count++;
}
rowEnd--;
}
if (colStart <= colEnd) {
for (int i = rowEnd; i >= rowStart; i--) {
matrix[i][colStart] = count++;
}
colStart++;
}
}
for (int[] row : matrix) {
for (int num : row) {
System.out.printf("%2d ", num);
}
System.out.println();
}
}
}