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