非常简单的动态规划题目
#include <vector>
using namespace std;
class Solution {
public:
vector<vector<int>> generate(int numRows) {
// state: dp[i][j]表示第i行第j列的数
// basecase: 左右两条边的值初始化为1
// transfer: dp[i][j] = dp[i-1][j-1] + dp[i-1][j]
// result: res
vector<int> tmp(numRows, 1);
vector<vector<int>> dp(numRows, tmp);
vector<vector<int>> res;
res.reserve(numRows);
for (int i = 0; i < numRows; i++) {
vector<int> layer(i+1, 1);
for (int j = 1; j < i; j++) {
dp[i][j] = dp[i-1][j-1] + dp[i-1][j];
layer[j] = dp[i][j];
}
res.emplace_back(layer);
}
return res;
}
};