标签:
抢劫一排沿街的房子,每一家有不同的财富值,一夜之内抢了连续两家就会拉响报警。
给出每家的财富值,求最多能抢到多少?
【思路】
动态规划求最优解。
解题关键:递推式——maxV[i]=max{maxV[i-2]+nums[i], maxV[i-1]};
【other code】
int rob(vector<int>& nums) { int n=nums.size(); if(n==0) return 0; if(n==1) return nums[0]; vector<int> maxV(n,0); maxV[0]=nums[0]; maxV[1]=max(nums[0],nums[1]); for(int i=2; i<n; i++) maxV[i]=max(maxV[i-2]+nums[i], maxV[i-1]); return maxV[n-1]; }
【notes】
动态规划基本思想,由最简单的情况开始,每加入一个节点,要计算当前的最优值。
代码很容易,算法很难想,关键是递推式。
标签:
原文地址:http://www.cnblogs.com/ketchups-notes/p/4475344.html