109. 数字三角形 中文English 给定一个数字三角形,找到从顶部到底部的最小路径和。每一步可以移动到下面一行的相邻数字上。

算法1:递归dfs(结果超时)

class Solution {
public:
    /**
     * @param triangle: a list of lists of integers
     * @return: An integer, minimum path sum
     */
    int minimumTotal(vector> &triangle) {
        // write your code here
        int res=dfs(triangle,0,0)+triangle[0][0];
        return res;
    }
    int dfs(vector> &triangle,int i,int j){
        cout<

 

算法2:

动态规划(从底层动态规划无需保存路径)

class Solution {
public:
    /**
     * @param triangle: a list of lists of integers
     * @return: An integer, minimum path sum
     */
    int minimumTotal(vector> &triangle) {
        // write your code here
        vector> res(triangle.size(),vector(triangle[triangle.size()-1].size()));
        for(int i=triangle.size()-1;i>=0;i--){
            for(int j=0;j<=i;j++){
                cout<

 

你可能感兴趣的:(基础编码)