杨辉三角形

import java.util.Scanner;

public class TwoDimensionalArray04 {
public static void main(String[] args) {
/*题目: 使用二维数组打印一个10行的杨辉三角形
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1....*/
/*思路分析:
* 1.定义一个二维数组,共10行,列可变 int[][] nums= new int[10][]
* 2.遍历每个一维数组,并为其开空间,空间大小=i+1
* 3.访问一维数组的每个元素,并为其赋值
* 4.在赋值之前要进行判断,每个一维数组的第一个和最后一个的值永远为1,
除此之外其他的值均存在以下关系:nums[i][j] = nums[i-1][j-1]+nums[i-1][j]
即当前行,当前列的元素的值=上一行同一列的元素值+上一行同一列前一个元素的值*/
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要打印的杨辉三角形的行数:");
int n =scanner.nextInt();
int[][] nums= new int[n][];
// 遍历一维数组,并为其开空间
for (int i = 0; i < nums.length; i++) {
nums[i] = new int[i + 1];
// 遍历访问每个一位数组的元素,并为其赋值
for(int j = 0;j < nums[i].length;j++){
//如果是数组的第一个或者最后一个元素则将1赋值给它
if (j == 0 || j == nums[i].length-1){
nums[i][j] = 1;
}
//否则当前行,当前列的元素的值=上一行同一列的元素值+上一行同一列前一个元素的值
else {
nums[i][j] = nums[i-1][j-1]+nums[i-1][j];
}
}
}
// 打印二维数组
for (int i = 0; i < nums.length;i++){
// 输出空格,使其呈现出金字塔的形状
for (int k = 0;k < n-1-i;k++){
System.out.print(" ");
}
// 遍历输出每个一维数组的数据
for (int j = 0;j < nums[i].length;j++){
System.out.print(nums[i][j]+" ");
}
System.out.println();
}
}
}
posted @ 2022-01-14 23:53  等风来ysh  阅读(82)  评论(0)    收藏  举报