C++ 杨辉三角

已知每行第一个和最后一个元素的值为1,其他元素的值是左上方和右上方的元素的值之和。

    //生成num行杨辉三角(num以1开始)
    vector<vector<int>> generate(int num) 
    {
        vector<vector<int>> result;//缓存结果
        for (int i = 0; i < num; ++i)
        {
            vector<int> temp(i + 1, 1);
            for (int j = 1; j < i; j++)//生成当前行
            {
                temp[j] = result[i - 1][j - 1] + result[i - 1][j];
            }
            result.emplace_back(std::move(temp));
        }
        return result;
    }

    //取杨辉三角的第num行(num以0开始)
    vector<int> getRow(int num)
    {
        vector<int> result;//缓存上一行
        for (int i = 0; i <= num; ++i)
        {
            vector<int> temp(i + 1, 1);
            for (int j = 1; j < i; j++)
            {
                temp[j] = result[j - 1] + result[j];
            }
            result = std::move(temp);
        }
        return result;
    }

 

posted @ 2021-12-15 15:32  mshentai  阅读(286)  评论(0编辑  收藏  举报