JAVA基礎(29)---二維陣列
二維陣列
int[][] 陣列名稱 = new int[二維陣列的行數][二維陣列的列數];
1,2,3,4,5
2,3,4,6,7
2,3,4,5,7
int[][] arr = new int[3][5];
初始化方式:靜態初始化 動態初始化
int[][] arr = {{1,2,3,4,5},{2,3,4,6,7},{2,3,4,5,7}};
int[][] arr = new int[][]{{1,2,3,4,5},{2,3,4,6,7},{2,3,4,5,7}};
通過索引可以唯一的定位到一個元素
二維陣列可以整體先看做是一個以行為大小的以為陣列,在這個一維陣列中,每一個元素又是一個一維陣列
楊輝三角
楊輝三角形性質:
每行數字左右對稱,由 1 開始逐漸變大,然後變小,回到 1。第 n 行的數字個數為 n 個,第 n 行數字和為 2^(n-1) 。每個數字等於上一行的左右兩個數字之和。可用此性質寫出整個楊輝三角形。
第 n 行的第 1 個數為 1,第二個數為 1× (n-1) ,第三個數為 1× (n-1) × ( n-2) /2,第四個數為1× (n-1) × (n-2)/2× (n-3)/3…依此類推。
演算法原理:
使用一個二維陣列 yh[][] 儲存楊輝三角形的資料,行和列的大小為所需要輸出的行數 Row(本程式中 Row 為 10)。使用 for 迴圈使楊輝三角中除了最外層(不包括楊輝三角底邊)的數為 1 ;使用語句 yh[i][j] = yh[i - 1][j - 1] + yh[i - 1][j] 使第 i 行第 j 列的資料等於第(i-1) 行,第(j-1)列的資料與第(i-1)行第(j)列的資料之和,即每個數字等於上一行的左右兩個數字之和。每行前邊空格數的計算方式為:2 * (N -r) N為總行數,認為當前第幾行。
public class YangHuiSanJiao{
public static void main(String[] args){
int[][] arr = new int[10][];
for(int i = 1 ; i <=10 ; i++){
arr[i - 1] = new int[i];
}
for(int j = 0 ; j < arr.length ;j++){
arr[j][0] = 1;
arr[j][arr[j].length -1] = 1;
}
//yh[i][j] = yh[i - 1][j - 1] + yh[i - 1][j]
for(int k = 1 ; k < arr.length; k++ ){
for(int h = 1 ; h < arr[k].length - 1 ; h++){
arr[k][h] = arr[k-1][h-1] + arr[k-1][h];
}
}
for(int m = 0 ; m < arr.length;m++){
for(int n = 0 ; n < arr[m].length;n++){
System.out.print(arr[m][n] +" ");
}
System.out.println();
}
}
}