JAVA基础(29)---二维数组

版权声明:如需转载请标明出处 https://blog.csdn.net/yj201711/article/details/83817439

二维数组

                              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();
		}
	
	
	
	}
}

猜你喜欢

转载自blog.csdn.net/yj201711/article/details/83817439
今日推荐