二维数组
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();
}
}
}