使用一个二维数组打印杨辉三角
程序员文章站
2024-03-21 20:03:34
...
使用一个二维数组打印杨辉三角,不多BB,上代码。
public class TestMain4 {
public static void main(String[] args) {
int[][]arr=new int[10][];
for(int i=0;i<arr.length;i++){
arr[i]=new int[i+1];
arr[i][0]=arr[i][i]=1;
for(int j=1;j<arr[i].length-1;j++){
arr[i][j]=arr[i-1][j]+arr[i-1][j-1];
}
}
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
}
}
代码其实很简单,就是刚接触算法这块,脑子有点转不过来,多想多练就好!此题大致分三个步骤。
- 先声明一个二维数组,此时可认为一维数组控制行数,二维数组控制列数。所以先将数组定义为int arr[][]=new int[10][];
- 给二维数组赋值,此步骤为重点。(不懂杨辉三角的可百度下),使用for循环给动态初始化数组赋值,每行的个数为i+1个,然后给每行的首末元素为1,所以arr[i][0]=arr[i][i]=1;,此时用二层循环给每行不是首末位的元素赋值,此数值等于该元素同列的上一行元素加该元素上一列元素左边的元素之和。故表达式可写为arr[i][j]=arr[i-1][j]+arr[i-1][j-1];。
- 使用二层for循环打印此二维数组!!!
这个题我做第一遍的的时候完全没有思路,就是难在赋值这块,不过敲个两遍把思路理清楚就很简单了!!END
推荐阅读
-
使用二维数组打印一个 10 行杨辉三角
-
使用一个二维数组打印杨辉三角
-
使用二维数组打印一个 10 行杨辉三角
-
用数组写一个杨辉三角
-
用二维数组打印一个杨辉三角
-
在一个动态录入的二维数组中找到一个最大的数,最小值并输出值和他所在的行和列
-
数据结构二分法-给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。
-
给定一个数组,如果排序后,求相邻两个数的最大差值,要求时间复杂度为n,不能使用非基于比较的排序
-
牛客网刷题java之在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
-
打印一个不重复字符串数组的所有组合