1、确定base case
2、确定状态,也就是原问题和子问题中会变化的量
3、确定选择,也就是导致状态发生变化的行为
4、明确DP数组的定义
# 初始化 base case
dp[0][0][...] = base
# 进行状态转移
for 状态1 in 状态1的所有取值:
for 状态2 in 状态2的所有取值:
for ...
dp[状态1][状态2][...] = 求最值(选择1,选择2...)
1、确定base case
2、确定状态,也就是原问题和子问题中会变化的量
3、确定选择,也就是导致状态发生变化的行为
4、明确DP数组的定义
# 初始化 base case
dp[0][0][...] = base
# 进行状态转移
for 状态1 in 状态1的所有取值:
for 状态2 in 状态2的所有取值:
for ...
dp[状态1][状态2][...] = 求最值(选择1,选择2...)