给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。c++实例
时间: 2024-10-23 07:02:14 浏览: 24
杨辉三角是一个著名的数学序列,每个数字都是上一行两个相邻数字的和。在C++中,可以使用动态规划的方式来构建。以下是一个递归和迭代版本的简单示例:
**递归版**:
```cpp
#include <vector>
using namespace std;
vector<vector<int>> generate(int numRows) {
vector<vector<int>> dp(numRows, vector<int>(numRows, 0));
for (int i = 0; i < numRows; ++i) {
dp[i][0] = dp[i][i] = 1;
}
for (int row = 2; row < numRows; ++row) {
for (int col = 1; col < row; ++col) {
dp[row][col] = dp[row - 1][col - 1] + dp[row - 1][col];
}
}
return dp;
}
```
**迭代版**:
```cpp
#include <vector>
using namespace std;
vector<vector<int>> generate(int numRows) {
vector<vector<int>> dp(numRows, vector<int>(numRows, 0));
dp[0][0] = 1;
for (int i = 1; i < numRows; ++i) {
dp[i][0] = dp[i - 1][0]; // 第一行除了第一个元素外全为0
dp[i][i] = 1; // 对角线元素为1
for (int j = 1; j < i; ++j) {
dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j]; // 其他位置的值为上方两格之和
}
}
return dp;
}
```
以上代码会返回一个二维数组,其中每个子数组对应杨辉三角的一行。
阅读全文