Java двумерный массив заполнен узором - PullRequest
0 голосов
/ 27 августа 2018

как мне заполнить двумерный массив заданного «размера», чтобы получить этот вывод:
N = 1

000
010
000

N = 2

0000
0110
0110
0000

N = 3

00000
01110
01210
01110
00000

public static void main (String[] args) throws java.lang.Exception
{
    int x, y;
    int N = 3;
    int counter = 0;
    x = y = N + 2;
    int[][] array = new int[x][y];
    for( int i = 0; i<x; i++){
        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] = 1;
            }
            System.out.print(array[i][j]);
        }
        System.out.println();
    }
}

Этот код дает мне только 1 с, окруженный 0, но я не могу понять, как увеличить значение до середины массива. Если N нечетное число, я могу использовать по модулю, но я не знаю, как это сделать с четными числами.

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Вот твоя домашняя работа: -)

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
0 голосов
/ 27 августа 2018

Значение ячейки - это кратчайшее расстояние до края матрицы.при условии cell[i,j], это может быть либо

  1. i (расстояние сверху)
  2. j (расстояние слева)
  3. Ni (расстояние снизу)
  4. Nj (расстояние справа)

, так итерируйте по матрице и рассчитайте кратчайшее расстояние.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...