[英]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]
,可以是
因此遍歷矩陣並計算最短距離。
這是您的作業:-)
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.