Вот твоя домашняя работа: -)
import static java.lang.Math.min;
public static void main (String[] args) throws java.lang.Exception {
int x, y;
int N = 5;
int counter = 0;
x = y = N + 2;
int[][] array = new int[x][y];
for (int i = 0; i < x; i++) {
counter = 0;
for (int j = 0; j < y; j++) {
if (i == 0 || i == x - 1 || j == 0 || j == y - 1) {
array[i][j] = 0;
} else {
array[i][j] = min(i,min(min(i,N-i+1),min(j,N-j+1)));
}
System.out.print(array[i][j]);
}
System.out.println();
}
}
Работает с помощью
min(i,min(min(i,N-i+1),min(j,N-j+1)))
для расчета кратчайшего (минимального) расстояния до края. В матрице есть 4 квадранта, каждый из которых рассчитывает расстояние до края - отсюда четыре min
-операции.
N = 1:
000
010
000
N = 2:
0000
0110
0110
0000
N = 3:
00000
01110
01210
01110
00000