前言:
现时朋友们对“动态规划解题”都比较注重,大家都想要了解一些“动态规划解题”的相关知识。那么小编同时在网络上网罗了一些关于“动态规划解题””的相关文章,希望大家能喜欢,大家快快来了解一下吧!题目地址
题目思路和具体解法代码
动态规划解题的一般思路:
确定初始条件;确定状态转移方程;确定边界条件。
初始条件:
只有一个房间,则返回 `nums[0]`;有两个房间,则返回 `Math.max(nums[0], nums[1])`。
房间数量大于2时(k > 2个房间),有2种状态转移选项,可以列出相应的状态转移方程:
偷窃第k间房,偷窃总金额为 `dp[k - 2] + nums[k]`;不偷窃第k间房,偷窃总金额为 `dp[k- 1]`。
所以 `dp[k] = Math.max(dp[k - 2] + nums[k], dp[k - 1])`。
上面内容确定后可以开始写代码了。下面是TypeScript的代码:
function rob(nums: number[]): number { const dp = [] const n = nums.length dp[0] = nums[0] if (n > 1) { dp[1] = Math.max(nums[0], nums[1]) for (let i = 2; i < n; i++) { dp[i] = Math.max(dp[i - 2] + nums[i], dp[i - 1]) } } return dp[n - 1]};
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。