本质上是一个DP问题,主要是注意边界条件以及状态转移方程。另外要注意的是二维数组必须要进行初始化。
k[i].resize(i+1,1); 否则会报错。时间太长,忘了。
在下面的blog里面找到了答案。https://blog.youkuaiyun.com/m0_38088298/article/details/79249044
class Solution {
public:
vector<vector<int>> generate(int numRows) {
if(numRows == 0) return {};
if(numRows == 1) return {{1}};
if(numRows == 2) return {{1}, {1,1}};
vector<vector<int>> k(numRows);
k[0] = {1}; k[1] = {1,1};
for(int i = 2; i < numRows; i++){
k[i].resize(i+1,1);
for(int j = 0; j <= i; j++){
if(j == 0 || j == i) NULL;
else k[i][j] = k[i-1][j-1] + k[i-1][j];
}
}
return k;
}
};
本文介绍了一个基于动态规划(DP)的问题解决方法,重点在于如何正确处理边界条件和状态转移方程。文章详细讲解了使用C++实现帕斯卡三角形的生成过程,包括二维数组的初始化和错误避免技巧。
1016

被折叠的 条评论
为什么被折叠?



