链接: leetcode动态数组vector实现杨辉三角
由题意可易得,从第三行开始,除了开始和末尾的位置上的元素,其余位置上的元素都是由上方的元素以及上方左侧的元素相加得到的,此时就很容易的到从第三行开始状态转移方程为vv[i][j] = vv[i - 1][j] + vv[i - 1][j - 1],之后就可轻松求解。
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> vv;
vv.resize(numRows);
for(int i = 0;i < numRows;i++)
{
vv[i].resize(i + 1,0);
vv[i].front() = vv[i].back() = 1;
}
//方法一
for(int i = 0;i < vv.size();i++)
{
for(int j = 1;j < vv[i].size();j++)
{
if(vv[i][j] == 0)
vv[i][j] = vv[i-1][j] + vv[i-1][j-1];
}
}
//方法二
for(int i = 0;i < numRows;i++)
{
for(int j = 1;j < ii;j++)
{
vv[i][j] = vv[i-1][j] + vv[i-1][j-1];
}
}
return vv;
}
};