簡體   English   中英

Java二維數組填充模式

[英]Java two-dimensional array filled with pattern

如何填充給定“大小”的二維數組以獲取此輸出:
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是一個奇數,我可以使用模,但是我不知道該如何使用偶數。

像元的值是到矩陣邊緣的最短距離。 假設cell[i,j] ,可以是

  1. 我(距頂部的距離)
  2. j(距左側的距離)
  3. Ni(距底部的距離)
  4. Nj(距右的距離)

因此遍歷矩陣並計算最短距離。

這是您的作業:-)

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個象限,每個象限都有自己的到邊緣的距離計算-因此有4個min運算。

N = 1:

000
010
000

N = 2:

0000
0110
0110
0000

N = 3:

00000
01110
01210
01110
00000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM