算法基礎 楊輝三角形

題目來源
藍橋網—>基礎練習—>楊輝三角形

直接先上代碼,後面來解釋

#include <iostream>
using namespace std;

int main(){
    int N;  
    cin>>N; 
    int **p=new int*[N];
    for(int i=0;i<N;i++){
        p[i]=new int[N];
    }   // create an dynamic array 'p'
    for(int i=0;i<N;i++){
        for(int j=0;j<N;j++){
            p[i][j]=0;
        }
    }       
    for(int i=0;i<N;i++){
        for(int j=0;j<N;j++){
            p[i][0]=1;
            if(j>0&&j<i){
                p[i][j]=p[i-1][j-1]+p[i-1][j];
            }
            if(i==j){
                p[i][j]=1;
            }
        }
    }
    for(int i=0;i<N;i++){
        for(int j=0;j<=i;j++){
            cout<<p[i][j]<<" ";
            if(i==j){
                cout<<endl;
            }
        }
    }
    for(int i=0;i<N;i++){
        delete [] p[i];
    }
    delete [] p;
    return 0;
}
其實這道題目最初打算使用的是一維數組。後來想到沒辦法處理層數之間的關係(或者處理太過複雜),因此最後還是使用了大家喜聞樂見的二維數組進行計算。

因爲輸入的數字無法確定,所以使用了動態數組。這點相對來說比目前網上看到的資源都要好很多,至少沒有浪費大量的內存空間。但是比較奇怪的是,如果和直接創建32X32的二維數組相比,動態數組反而會更加消耗內存和CPU資源?

方法比較

(關於如何在C++中創建動態數組,大家可以到C++動態數組)這裏看看,很簡單,但是也是很基礎的東西。

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