蓝桥杯:杨辉三角

蓝桥杯赛前基础练习。
http://lx.lanqiao.cn/problem.page?gpid=T10

问题描述 杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。  
它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。   下面给出了杨辉三角形的前4行:
1
1 1
1 2 1
1 3 3 1  
给出n,输出它的前n行。

直接给出代码吧,主要思路就是用二维数组来装系数,i行0列全都为1,其它部分为a[i][j]=a[i-1][j-1] + a[i-1][j];

非递归代码:


public static void printYangHuiTriangle(int n){

        int[][] a = new int[n][n];//初始化元素值为0
        a[0][0] = 1;
        for(int i=0;i<n;i++){
            for(int j=0;j<i+1;j++){
                if(j==0){
                    a[i][j] = 1;
                }else{
                    a[i][j]=a[i-1][j-1] + a[i-1][j];
                }
                System.out.print(a[i][j]+" ");
            }
            System.out.println();
        }
    }

递归代码:

    //递归
    static int[][] num;
    public static void printYangHuiTriangleII(int i,int n){
        if(i>=n){
            return;
        }
        for(int j=0;j<=i;j++){
            if(j==0){
                num[i][j] = 1;
            }else{
                num[i][j] = num[i-1][j] + num[i-1][j-1];
            }
            System.out.print(num[i][j]+" ");
        }
        System.out.println();
        printYangHuiTriangleII(i+1,n);

    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
// printYangHuiTriangle(sc.nextInt());
        int n = sc.nextInt();
        num = new int[n][n];
        printYangHuiTriangleII(0,n);
        sc.close();
    }

感觉用二维数组装那么多0也不太好,或许可以只用一维数组就能计算出来,改天试试。

    原文作者:杨辉三角问题
    原文地址: https://blog.csdn.net/keYuK0/article/details/79769238
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞