动态生成二位数组中列的长度
原理:先声明数组行的长度,每行都看作一个一维数组,再去声明每列的数组长度。
上代码
//声明一个二维数组,不声明列数大小,相当于声明了三个没有指定大小的一维数组
int [][] arr = new int[3][];
for(int i = 0; i < arr.length; i++){ //循环每行,给每一行的一维数组赋值
arr[i] = new int[i + 1]; // 声明每行的数组长度
for(int j = ; j < arr[j].length; j++){
arr[i][j] = i + 1; //赋值 每行内的数组元素
}
}
经典应用案例,杨辉三角
题目:打印一个这样的数据
分析: 第一行有一个元素,第n行有n个元素
每一行的第一个元素和最后一个元素都是1
每行除了第一个元素和最后一个元素的值, arr[i][j] = arr[i-1][j] + arr[i-1][j-1];
int[][] yangHui = new int [10][]; //创建一个动态列的二维数组
for(int i = 0; i < yangHui.length; i++){
yangHui[i] = new int[i+1];
for(int j = 0; j < yangHui[i].length; j++){
if(j == 0 || j == arr[j].length - 1){ // 每一行的第一个元素和最后一个元素都是1
yangHuip[i][j] = 1;
}else{
yangHui[i][j] = yangHui[i-1][j] + yangHui[i-1][j-1]; //核心算法
}
}
}