@LIUHUAN
2019-05-23T23:14:19.000000Z
字数 1473
阅读 796
algorithm
int rob(vector<int>& nums) {
int n = nums.size();
if(n == 0 )
return 0;
vector<int> dp(n + 1,0); // dp[n]才是结果
dp[1] = nums[0]; // 方便计算
for(int i = 2; i <= n; i++ ) {
dp[i] = max( dp[i-2] + nums[i-1], dp[i-1]);
}
return dp[n];
}
int rob(vector<int>& nums) {
int n = nums.size();
if(n <= 0)
return 0;
if(n <= 1)
return nums[0];
vector<int> dp(n + 1, 0);
dp[1] = nums[0]; //
for(int i = 2; i < n; i++ ) {
dp[i] = max(dp[i-1], dp[i-2] + nums[i-1]);
}
int maxv = dp[n-1];
dp[1] = 0;// 不选择a[0]
for(int i = 2; i <= n; i++ ) {
dp[i] = max(dp[i-1],dp[i-2] + nums[i-1]);
}
maxv = max(maxv ,dp[n]);
return maxv;
}