可以复用house robber的代码,两趟dp作为两种情况考虑,选最大值
#include <stdio.h>
#define MAX 1000
#define max(a,b) ( (a)>(b)?(a):(b) )
int dp[MAX]={};
int rob1(int* a, int n) {
int i;
dp[]=;
dp[]=a[];
for(i=;i<n;i++){
dp[i+]=max(dp[i],a[i]+dp[i-]);
}
return dp[n];
} int rob(int* nums, int numsSize) {
if(numsSize==)return nums[];
return max(rob1(nums,numsSize-),rob1(nums+,numsSize-)) ;
}