示例#1
0
 int rob(vector<int>& nums) {
     int n = nums.size();
     if (n == 0) return 0;
     if (n == 1) return nums[0];
     if (n == 2) return max(nums[0], nums[1]);
     return max(linearRob(nums,0, n-1), linearRob(nums,1,n));
 }
示例#2
0
    int rob(vector<int>& nums) {
      if(nums.size() == 0){
        return 0;
      }

      if(nums.size() == 1){
        return nums[0];
      }

      if(nums.size() == 2){
        return max(nums[0], nums[1]);
      }

      vector<int> n1;
      for(int i = 0; i < nums.size() - 1; i++){
        n1.push_back(nums[i]);
      }
      int c1 = linearRob(n1);

      vector<int> n2;
      for(int i = 1; i < nums.size(); i++){
        n2.push_back(nums[i]);
      }
      int c2 = linearRob(n2);
      return max(c1, c2);
    }