1.杨辉三角
杨辉三角可看成一个K行*N列的矩阵 ,即可用二维数组来存储整个元素 。它存在如下规律:
- 第K层有K个元素;
- 每层的第一个元素和最后一个元素值为1;
- 当K>2时,其余的元素等于它上一层两相邻元素之和即A[K][N]= A[K-1][N-1]+A[K-1][N]。
2. C++中vector的用法
vector是一个能够存放任意类型的动态数组,vector作为函数的参数或者返回值时,需要注意它的写法。
http://www.cplusplus.com/reference/vector/vector/ 点击打开链接
https://blog.csdn.net/duan19920101/article/details/50617190/ 点击打开链接
参考上述链接。
3.练习
#include<iostream>
#include<vector>
using std::vector;
using namespace std;
//杨辉三角--看成一个K行*N列的矩阵 ,即用二维数组来存储整个元素
int main(){
class Solution {
public:
vector < vector<int> > pasTrig(int k){ //返回一个int型二维数组
vector < vector<int> > vec; //定义一个二维数组
vec.resize(k);//二维数组的行数
for(int row=0; row<k; row++) {
vec[row].resize(row+1); //每行元素个数随行数row动态增长--规律1
vec[row][0]=1; //规律2
vec[row][vec[row].size()-1]=1; //规律2
for(int column=1; column<vec[row].size()-1;column++){
vec[row][column] = vec[row-1][column-1]+vec[row-1][column]; //规律3
}
}
return vec;
}
};
int numRow =5;
Solution sig1;
vector < vector<int> > vec1= sig1.pasTrig(numRow);
//打印输出
for( int i=0;i<numRow;i++ ){
for(int j=0;j<=i;j++){
cout << vec1[i][j] <<" " ;
}
cout <<endl ;
}
return vec1.size();
}