LeetCode House Robber II(动态规划)

问题:给出一个数组,表示房屋内藏有的现金。房屋围成一圈。相邻房间装有防盗系统,如果相邻的房间在同一晚上被偷,系统会自动报警。要求在不触到警报的情况下,能够偷到的最高金额。

思路:因为房屋围成一圈,并且不能连续偷相邻的房间。因此只能是在0-n-1和1-n-1之间偷。用dp(i)表示到第i个房间时可以偷到的最高金额,当不偷第i个房间时,dp(i)=dp(i-1),当偷第i个房间时,dp(i) = dp(i-2) + nums[i],所以有dp(i)=max{dp(i-1), dp(i-2)+nums[i]}

具体代码参考:

https://github.com/wuli2496/OJ/tree/master/LeetCode/House%20Robber%20II

你可能感兴趣的:(算法设计与分析,OJ)