前几天刚入c++,感觉很多python的东西遮住了视线,就好比第一章后面几节有个题目,杨辉三角。用惯了python的列表,然后c++是数组,怎么用就有点懵逼,python的列表可以随意增加元素,可c++数组是定义之后就固定长度了。各种苦思冥想,虽然有看到书本上一些简洁又牛逼的答案,但是如何用已有的只是来实现,我就是想钻钻看,上周某天午休的时候想着想着睡着了……
后来的后来,就有了下面的实现代码:
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
int n=10;
int arraya[n]={1,},arrayb[n+1]={1,};
for(int j=1;j<=n;++j){
for(int i=0;i<=j-1;++i){
arrayb[i+1]=arraya[i]+arraya[i+1];
cout<<setfill(' ')<<setw(4)<<arrayb[i];
}
for(int i=0;i<=j-1;++i){
arraya[i]=arrayb[i];
}
cout<<endl;
}
}
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
有发给小伙伴看,说没看明白我想干啥
可能讲一下,就没那么懂了。先定义一个n个(10个)元素的数组,还有一个11个元素的数组,首位是1,后面都是0。j表示行数,一共10行;i表示数组元素的下标,从0开始,数组b中的元素是数组a中对应下标的2个元素之和,遍历出的数组b中的元素即杨辉三角的每行元素。后面一段循环就是把数组b赋值给数组a,然后就可以一直循环下去了。
其实数组a是10位,数组b是11位,而我只是把杨辉三角需要的位数给输出了,如果把b数组全部遍历一下输出,结果是一个10行*11列的矩阵,每行后面的位数全部是0。