携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第24天,点击查看活动详情
1️⃣前言
大家好,我是翼同学。今天笔记的内容是:
- 二维数组应用
2️⃣内容
利用二维数组打印杨辉三角
前面讲过,Java可以很方便的构造一个“不规则”的数组。
那什么是不规则数组?简单来说就是二维数组的每一个子数组的长度是不同的。
为了很好的理解这个概念,我们来看一个经典的示例:杨辉三角
首先,什么是杨辉三角?
- 杨辉三角,就是二项式系数在三角形中的一种几何排列,在中国南宋数学家杨辉于1261年所著的《详解九章算法》一书中出现。
杨辉三角的特点有很多,比如:
- 第
n行数据就有n项元素,每行数字从1开始并且也终止于1,其左右对称 - 每个数字的值等于它上方两数之和
- 的展开式中的各项系数依次对应杨辉三角中第行中的每一项
- 第
n行的m个数可表示为从n-1个不同元素中取m-1个元素的组合数 - ...
解题思路如下:
首先,我们创建并初始化一个二维数组,注意,这里指的是动态创建数组。
int[][] result = new int[7][]; // 7行数据即可
接着是子数组的元素个数的设置,也就是每n行都有n个元素。并给每一行的首元素和末元素都赋值为1。
for(int i = 0; i<result.length; i++){
result[i] = new int[i+1];
result[i][0] = 1;
result[i][i] = 1;
}
然后根据杨辉三角的本质之一:每个数字都等于其上一行的左右两个数字之和赋值数组元素,这才是这道作业的关键。
for(int i = 0; i<result.length; i++){
for(int j = 1; j < result[].length-1; j++){
result[i][j] = result[i-1][j-1] + result[i-1][j];
}
}
最后遍历数组并打印出来即可。
完整代码如下:
int[][] result = new int[7][];
for(int i = 0; i<result.length; i++) {
result[i] = new int[i+1];
result[i][0] = 1;
result[i][i] = 1;
for(int j = 1; j < result[i].length-1; j++){
result[i][j] = result[i-1][j-1] + result[i-1][j];
}
}
for(int[] arr : result) {
for(int i : arr) {
System.out.print(i + " ");
}
System.out.println();
}
3️⃣写在最后
好了,今天的笔记就记到这里。