題目來源
藍橋網—>基礎練習—>楊輝三角形
直接先上代碼,後面來解釋
#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++動態數組)這裏看看,很簡單,但是也是很基礎的東西。