#define max(a,b) ((a)>(b))?(a):(b); int rob(int* nums, int numsSize){ if(numsSize==1) return *nums; int dp[2][101]={0}; dp[0][0]=nums[0]; dp[0][1]=nums[0]; dp[1][1]=nums[1]; for (int i=2; i<numsSize; i++){ dp[0][i]=max(nums[i]+dp[0][i-2], dp[0][i-1]); dp[1][i]=max(nums[i]+dp[1][i-2], dp[1][i-1]); } return max(dp[0][numsSize-2], dp[1][numsSize-1]); }