您的位置:首页 > 编程语言 > C语言/C++

算法基础 杨辉三角形

2016-04-02 16:24 288 查看
题目来源

蓝桥网—>基础练习—>杨辉三角形

直接先上代码,后面来解释

#include <iostream>
using namespace std;

int main(){
int N;
cin>>N;
int **p=new int*
;
for(int i=0;i<N;i++){
p[i]=new int
;
}   // 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++动态数组)这里看看,很简单,但是也是很基础的东西。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 C++