动态规划(dynamic programing)

关键点

  • 递推!(递归+记忆化)
  • 状态定义:opt[n],重中之重!
  • 状态转移方程:opt[n] = bestOf(opt[n-1], opt[n-2], ...)
  • 最优子结构

比较

回溯(递归)- 重复计算,通常找不到最优子结构。
贪心 - 永远局部最优,局部最优不一定是全局最优。
动态规划 - 记录局部最优子机构(避免重复计算,再通过状态转移方程再递推下一个),集上述两者优点。

题目

leetcode 120. 三角形最小路径和

func minimumTotal(triangle [][]int) int {
    n := len(triangle)
    mini := triangle[n-1]
    // 从下往上进行变例
    for i:= n-2;i>=0;i--{
        for j :=0; j < len(triangle[i]);j++ {
        	// mini[j]使用一次,所以可以直接修改
            mini[j] = triangle[i][j] + min(mini[j],mini[j+1])
        }
    }
    return mini[0]
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值