打印溢出的帕斯卡三角形第k行的代码

问题描述

我正在编写代码以打印帕斯卡三角形的第k行。最初取两个向量,然后选择计算p和q中的下一行。但是这段代码给人以溢出的印象,我不知道为什么。请帮忙!

vector<int> getRow(int k) {
    vector<int> p,q;
    p.push_back(1);
    q.push_back(1);
    q.push_back(1);
    
    
    for(int i=2;i<=k;i++)
    {
        if(i%2)
        {
            p.clear();
            p.push_back(1);
            for(int j=1;j<i;j++)
                p.push_back(q[j]+q[j-1]);
            p.push_back(1);
        }
        else
        {
            q.clear();
            q.push_back(1);
            for(int j=1;j<i;j++)
                q.push_back(p[j]+p[j-1]);
            q.push_back(1);
        }
    }
    
    if(k%2)
        return p;
    else
        return q;
}

解决方法

在此行:q.push_back(p[j] + p[j - 1])中,您要在没有该单元格时尝试访问j = 1。因此,再添加一个p.push_back(1)即可。

或者最好将循环前的push_back更改为此:

for (int i = 0; i <= 1; i++) {
    p.push_back(1);
    q.push_back(1);
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...