leetcode杨辉三角 C++
时间: 2024-08-14 10:05:40 浏览: 61
LeetCode上关于杨辉三角的问题通常涉及编程任务,其中需要你实现一个算法来生成或操作杨辉三角(Pascal's Triangle)。杨辉三角是一个数学术题的经典例子,它是一个二维数组,每一行都是从上到下依次增加一个数1,其余位置的数等于其上方两数之和。
在C++中,你可以使用动态规划的方式来解决这个问题。以下是一个简单的递归和迭代方法示例:
**递归方法:**
```cpp
vector<vector<int>> generate(int n) {
vector<vector<int>> dp(n, vector<int>(n, 0));
for (int i = 0; i < n; ++i) {
dp[i] = dp[i][i] = 1;
}
for (int row = 2; row < n; ++row) {
for (int col = 1; col < row; ++col) {
dp[row][col] = dp[row - 1][col - 1] + dp[row - 1][col];
}
}
return dp;
}
```
**迭代方法:**
```cpp
vector<vector<int>> generate(int n) {
vector<vector<int>> dp(n, vector<int>(n, 0));
dp = {1};
dp = {1, 1};
for (int i = 2; i < n; ++i) {
for (int j = 0; j < i; ++j) {
dp[i][j] = dp[j][j - 1] + dp[j][j]; // 注意这里不需要加dp[j - 1][j - 1]
}
}
return dp;
}
```
这两种方法都能有效计算出给定行数的杨辉三角。需要注意的是,在实际竞赛环境中,递归可能会因为递归深度过深而导致栈溢出,所以迭代法更为推荐。
阅读全文