二维数组和杨辉三角

二维数组和杨辉三角

image

public class Test2 {
    //二维数组
    public static void main(String[] args) {
        int nums[][] = new int[9][];
        nums[2] = new int[5];
        nums[3] = new int[6];
        nums[4] = new int[7];

        int[][] nums1 = {{1, 2,46}, {8, 9}, {41, 52,5}};
        for (int i = 0; i < nums1.length; i++) {
            for (int j = 0; j < nums1[i].length; j++) {
                System.out.print(nums1[i][j]);
            }
            System.out.println();
        }


    }
}

image

public class YangHuiSanJiao {
    public static void main(String[] args) {
        //杨辉三角高度
        int high = 10;
        //new一个二维数组建三角
        int [][] nums = new int[high][];
        for (int i = 0; i < high; i++) {
            nums[i] = new int[i+1];
        }
        //填充两边的1
        for (int i = 0; i < high; i++) {
            nums[i][0] = 1;
            nums[i][nums[i].length-1] = 1;
        }
        //从第三层开始计算 nums[n][i] = nums[n-1][i-1] + nums[n-1][i]
        for (int i = 2; i < nums.length; i++) {
            for (int j = 1; j < nums[i].length-1; j++) {
                nums[i][j] = nums[i-1][j-1] + nums[i-1][j];
            }
        }
        for (int i = 0; i < nums.length; i++) {
            for (int j = 0; j < nums[i].length; j++) {
                System.out.print(nums[i][j]+" ");
            }
            System.out.println();
        }

    }
}

1 
1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 
1 5 10 10 5 1 
1 6 15 20 15 6 1 
1 7 21 35 35 21 7 1 
1 8 28 56 70 56 28 8 1 
1 9 36 84 126 126 84 36 9 1 

Process finished with exit code 0

用if+else优化后的代码

public class YangHuiSanJiao {
    public static void main(String[] args) {
        //杨辉三角高度
        int high = 12;
        //new一个二维数组建三角
        int[][] nums = new int[high][];
        for (int i = 0; i < high; i++) {
            nums[i] = new int[i + 1];
        }
        //填充两边的1
        for (int i = 0; i < high; i++) {
            nums[i][0] = 1;
            nums[i][nums[i].length - 1] = 1;
        }
        //从第三层开始计算 nums[n][i] = nums[n-1][i-1] + nums[n-1][i]
        for (int i = 0; i < nums.length; i++) {
            for (int j = 0; j < nums[i].length - 1; j++) {
                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 j = 0; j < nums[i].length; j++) {
                System.out.print(nums[i][j]+" ");
            }
            System.out.println();
        }
    }
}

1 
1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 
1 5 10 10 5 1 
1 6 15 20 15 6 1 
1 7 21 35 35 21 7 1 
1 8 28 56 70 56 28 8 1 
1 9 36 84 126 126 84 36 9 1 
1 10 45 120 210 252 210 120 45 10 1 
1 11 55 165 330 462 462 330 165 55 11 1 

Process finished with exit code 0
posted @ 2022-05-08 22:50  追风的羊  阅读(43)  评论(0)    收藏  举报