动态规划
背景
[
[2],
[3,4],
[6,5,7],
[4,1,8,3]
]DFS
// 会超时
public int MinimumTotal(IList<IList<int>> triangle)
{
return DFS(0, 0, triangle);
}
// 返回值表示从x, y处到底部的最小路径和
private int DFS(int x, int y, IList<IList<int>> triangle)
{
if (x == triangle.Count - 1)
{
return triangle[x][y];
}
int minLeft = DFS(x + 1, y, triangle);
int minRight = DFS(x + 1, y + 1, triangle);
return Math.Min(minLeft, minRight) + triangle[x][y];
}DFS的优化
从DFS到动态规划
自底向上
自顶向下
空间优化
使用场景
四点要素
常见四种类型
矩阵类型
最小路径和
不同路径
不同路径 II
序列类型
爬楼梯
跳跃游戏
跳跃游戏-ii
分割回文串-ii
最长递增子序列
单词拆分
小结
双序列类型
最长公共子序列
编辑距离
零钱和背包
零钱兑换
零钱兑换 ii
背包问题
背包问题-ii
分割等和子集
练习
最后更新于


