简单基于递推的动态规划方法

shencode 2022-04-07 14:52:54 2022-04-07 14:55:23 35 返回题目

  • 分析题意可尝试动态规划(前层抽屉上锁与未锁对后面抽屉状态无影响),状态描述:

f[i][j][0]:表示前层抽屉锁死个且该抽屉i未锁的方案数。

f[i][j][1]:表示前层抽屉锁死个且该抽屉i上锁的方案数。

状态转移:

(1)考虑f[i][j][0]的上一层抽屉:

1.png

转移方程:f[i][j][0]=f[i-1][j][1]+f[i-1][j][0]

边界:f[1][0][0]=1, f[i][0][0]=f[i-1][0][1]+f[i-1][0][0]

(2)类似地,

3.png

转移方程:f[i][j][1]=f[i-1][j-1][1]+f[i-1][j][0]

边界:f[1][1][1]=1, f[i][0][1]=f[i-1][0][0]

  • 再依照转移方程求解即可,时间复杂度为O(n*m)。
{{ vote && vote.total.up }}

共 1 条回复

heyucheng

看不了图片啊