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));
}
示例#3
0
    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));
    }