藍橋杯:楊輝三角

藍橋盃賽前基礎練習。
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也不太好,或許可以只用一維數組就能計算出來,改天試試。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章