java基础题——二维数组的基本应用2

编写一个程序,生成一个给定行数的杨辉三角

*1
*1 1
*1 2 1
*1 3 3 1
*1 4 6 4 1
1 5 10 10 5 1

方法一
Scanner scanner = new Scanner(System.in);
    System.out.print("请输入杨辉三角形的行数:");
    int n = scanner.nextInt();

    // 定义一个二维数组
    int[][] yanghui = new int[n][n];

    // 给第一列和最后一列赋值为1
    for (int i = 0; i < n; i++) {
        yanghui[i][0] = 1;
        yanghui[i][i] = 1;
    }

    // 按照规律给其他元素赋值
    for (int i = 2; i < n; i++) {
        for (int j = 1; j < i; j++) {
            yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];
        }
    }
解释:
  1. 首先,创建了一个Scanner对象来读取用户的输入,用来提示用户输入杨辉三角形的行数,并将输入的值存储在变量n中。
  2. 定义一个二维数组yanghui,用于存储杨辉三角形的每一行。数组的大小为n x n,其中n是用户输入的行数。
  3. 使用两个for循环来初始化杨辉三角形。
    1. 第一个for循环遍历每一行,将第一列和最后一列的元素设置为1。这是杨辉三角形的基本结构。
    2. 第二个for循环遍历每一行中的其他元素。对于每个元素,它的值等于上一行中对应位置的两个元素之和。这就是杨辉三角形的规律。
  4. 最后,这个程序将生成的杨辉三角形打印出来。
方法二
int[][] nums = new int[6][];

    for (int i = 0; i < nums.length; i++) {
        nums[i] = new int[i + 1];
        Arrays.fill(nums[i], 1); // 每一个元素都是 1
        // j = 1 每行的第一个元素跳过, j < nums[i].length - 1 跳过最后一个  i > 1 跳过前两行
        for (int j = 1; i > 1 && j < nums[i].length - 1; j++) {
            nums[i][j] = nums[i - 1][j] + nums[i - 1][j - 1];
        }
    }

    for (int i = 0; i < nums.length; i++) {
        System.out.println(Arrays.toString(nums[i]));
    }
解释:
  1. 首先,创建名为nums的二维数组,其长度为6。

  2. 然后,通过两个嵌套的for循环来填充这个二维数组。外层循环遍历每一行,内层循环遍历每一列。

  3. 在内层循环中,如果当前列的索引j等于0或等于该行的最后一个元素的索引(即第一个或最后一个元素),则将该元素的值设置为1。

    否则,将该元素的值设置为其上方元素和左上方元素的和。这样可以确保生成的二维数组是一个杨辉三角。

  4. 最后,通过另一个for循环打印出这个二维数组的每个元素。

你可能感兴趣的:(数组,java,java基础题,java,排序算法,算法)