0%

动态规划

概念

分解问题,存储子问题结果。

例子

  • 斐波那契数列
  • 最长公共子序列

总结

动态规划解决复杂问题。### 典型用法

  • 背包问题
  • 爬楼梯问题

编程技巧

使用记忆化(memoization)减少重复计算。

递归与迭代

递归实现简单但可能导致栈溢出,迭代表格更稳健。

示例代码

1
2
3
4
5
function fib(n) {
const memo = [0,1];
for (let i=2;i<=n;i++) memo[i]=memo[i-1]+memo[i-2];
return memo[n];
}

复杂度

一般为 O(n) 或多项式时间,取决于状态空间大小。

练习资源

LeetCode, HackerRank 等平台有大量 DP 题目。

FILLER_DP_1
FILLER_DP_2
FILLER_DP_3
FILLER_DP_4
FILLER_DP_5
FILLER_DP_6
FILLER_DP_7
FILLER_DP_8
FILLER_DP_9
FILLER_DP_10
FILLER_DP_11
FILLER_DP_12
FILLER_DP_13
FILLER_DP_14
FILLER_DP_15
FILLER_DP_16
FILLER_DP_17
FILLER_DP_18
FILLER_DP_19
FILLER_DP_20
FILLER_DP_21
FILLER_DP_22
FILLER_DP_23
FILLER_DP_24
FILLER_DP_25
FILLER_DP_26
FILLER_DP_27
FILLER_DP_28
FILLER_DP_29
FILLER_DP_30
FILLER_DP_31
FILLER_DP_32
FILLER_DP_33
FILLER_DP_34
FILLER_DP_35
FILLER_DP_36
FILLER_DP_37
FILLER_DP_38
FILLER_DP_39
FILLER_DP_40
FILLER_DP_41
FILLER_DP_42
FILLER_DP_43
FILLER_DP_44
FILLER_DP_45
FILLER_DP_46
FILLER_DP_47
FILLER_DP_48
FILLER_DP_49
FILLER_DP_50
FILLER_DP_51
FILLER_DP_52
FILLER_DP_53
FILLER_DP_54
FILLER_DP_55
FILLER_DP_56
FILLER_DP_57
FILLER_DP_58
FILLER_DP_59
FILLER_DP_60
FILLER_DP_61
FILLER_DP_62
FILLER_DP_63
FILLER_DP_64
FILLER_DP_65
FILLER_DP_66
FILLER_DP_67
FILLER_DP_68
FILLER_DP_69
FILLER_DP_70
FILLER_DP_71
FILLER_DP_72
FILLER_DP_73
FILLER_DP_74
FILLER_DP_75
FILLER_DP_76
FILLER_DP_77
FILLER_DP_78
FILLER_DP_79
FILLER_DP_80
FILLER_DP_81
FILLER_DP_82
FILLER_DP_83
FILLER_DP_84
FILLER_DP_85
FILLER_DP_86
FILLER_DP_87
FILLER_DP_88
FILLER_DP_89
FILLER_DP_90
FILLER_DP_91
FILLER_DP_92
FILLER_DP_93
FILLER_DP_94
FILLER_DP_95
FILLER_DP_96
FILLER_DP_97
FILLER_DP_98
FILLER_DP_99
FILLER_DP_100
FILLER_DP2_101
FILLER_DP2_102
FILLER_DP2_103
FILLER_DP2_104
FILLER_DP2_105
FILLER_DP2_106
FILLER_DP2_107
FILLER_DP2_108
FILLER_DP2_109
FILLER_DP2_110