首先要知道什么是Pascal triangle:
帕斯卡三角形,是一个三角形矩阵,其顶端是 1,视为(row0).第1行(row1)(1&1)两个1,这两个1是由他们上头左右两数之和 (不在三角形内的数视为0).依此类推产生第2行(row2):0+1=1;1+1=2;1+0=1.第3行(row3):0+1=1;1+2=3; 2+1=3;1+0=1. 循此法可以产生以下诸行。
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> p;
if(numRows==0)return p;
vector<int > f(1,1);
p.push_back(f);
if (numRows==1)return p;
for(int i=2;i<=numRows;i++){
f.push_back(0);
vector<int> q=f;
for(int j=0;j<i;j++){
if(j==0)q[j]=f[j];
else q[j]=f[j-1]+f[j];
}
p.push_back(q);
f=q;
}
return p;
}
};