题目:

算法思想: 这道题明显看出来是动态规划,因为可以通过构建子问题来达到最优。分析一下,只有一间房那么最大的就是1号房的金额,如果有两间房,那么只能选择其中最大的一个。从三间房以后,当前n号房的最大金额是max(n-2号房的钱+n号房的钱,n-1号房的钱)。用pre变量维护n-2号房,cur维护n-1号房。
代码:
int rob(vector<int>& nums) {
int cur = 0;
int pre = 0;
for(int i = 0;i < nums.size();i++)
{
int tmp = cur;
cur = max(pre+nums[i],cur);
pre = tmp;
}
return cur;
}
本文探讨了使用动态规划算法解决一串连续房屋抢劫问题的方法。通过构建子问题,找到最大金额的策略,利用pre和cur变量维护状态,实现高效求解。
1184

被折叠的 条评论
为什么被折叠?



