118. 杨辉三角

在杨辉三角中,每个数是它左上方和右上方的数的和。

示例:

输入: 5
输出:
[
  [1],
  [1,1],
 [1,2,1],
 [1,3,3,1],
[1,4,6,4,1]
]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/pascals-triangle
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

用动态规划的思想组建模型

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

即可得出解题思路

std::vector<std::vector<int>> CLeetCode_Solution::generate(int numRows)
{
    vector<std::vector<int>> ret;
    if (numRows == 0) return ret;

    for (int i = 0; i < numRows; i++)
    {
        //将第二层vec全部初始化为1,避开处理边界的1
        vector<int> ret_sec(i + 1, 1);
        //从1开始处理,并且不处理最后一个
        for (int j=1; j < i;++j)
        {
            ret_sec[j] = ret[ret.size() - 1][j - 1] + ret[ret.size() - 1][j];
        }
        ret.push_back(ret_sec);
    }
    return ret;
}

 

posted @ 2020-04-02 20:44  GongKiro  阅读(106)  评论(0编辑  收藏  举报