我觉得这道杨辉三角思路应该是这样的,就是用动态规划,但感觉里面错误不少,有没有朋友愿意看一下啊。

问题遇到的现象和发生背景

https://leetcode-cn.com/problems/pascals-triangle/solution/

问题相关代码,请勿粘贴截图
class Solution {
public:
    vector<vector<int>> generate(int numRows) {
        int i = numRows;
        int j = numRows;
        int dp[i][j];               //代表的是第i行第j列的元素是多少
        vector<vector<int>> st;
        vector<int> s;
        for(int i = 0;i<numRows;i++)
            dp[i][0] = 1;

        for(int j = 0;j<numRows;j++)
            dp[j][j+1] = 0;

        for(int i = 1;i<=numRows;i++){
            for(int j = 1;j<=i+1;j++){
                dp[i][j] = dp[i-1][j-1] + dp[i-1][j];
                s.push_back(dp[i,j]);
            }
            st.push_back(s);
        }
        return st;
    }
};

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

按照你的代码改的,有什么看不懂的再问我


#include<iostream>
#include<vector>
using namespace std;
vector<vector<int>> generate(int numRows) {

    //int i = numRows;

    //int j = numRows;

    vector<vector<int>> dp(numRows+1,vector<int>(numRows+1));               //代表的是第i行第j列的元素是多少

    vector<vector<int>> st;

    

    for (int i = 0; i<=numRows; i++)

        dp[i][0] = 1;



    for (int j = 0; j<numRows; j++)

        dp[j][j + 1] = 0;

    st.push_back({ 1 });

    for (int i = 1; i <= numRows; i++) {
        vector<int> s;
        s.push_back(dp[i][0]);
        for (int j = 1; j <= i; j++) {

            dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];

            //s.push_back(dp[i, j]);
            s.push_back(dp[i][j]);

        }

        st.push_back(s);

    }

    return st;

}

int main()
{
    vector<vector<int>> ans = generate(5);
    for (size_t i = 0; i < ans.size(); ++i) {
        for (size_t j = 0; j < ans[i].size(); ++j) {
            cout << ans[i][j] << " ";
        }
        cout << endl;
    }
    system("pause");
    return 0;
}