int rob(vector<int>& nums) { int sz = nums.size(); if(!sz) return 0; if(sz==1) return nums[0]; vector<int> v1(nums.begin(), nums.begin() + sz - 1); vector<int> v2(nums.begin() + 1, nums.begin() + sz); int re1=rob1(v1),re2=rob1(v2); return re1>re2?re1:re2; }
int rob(int* nums, int numsSize) { if(numsSize==0) return 0; else if(numsSize==1) return nums[0]; else if(numsSize==2) return nums[0]>nums[1]?nums[0]:nums[1]; else return max(rob1(nums,numsSize-1),rob1(nums+1,numsSize-1)); }
int rob(vector<int>& nums) { if (0 == nums.size()) { return 0; } if (1 == nums.size()) { return nums[0]; } vector<int> nums1(nums.begin() + 1, nums.end()); nums.pop_back(); return max(rob1(nums), rob1(nums1)); }