第20871题 单选
请补全打家劫舍问题(不进入相邻房屋拿最多糖果)C++实现代码中缺失的DP状态转移表达式

小朋友们去邻里拜年,每个家里有不同数量的糖果。规则是:不能连续进入两个相邻的房子(即不能同时取相邻两家的糖果),目标是拿到最多糖果。现有C++实现代码如下,请补全横线处代码:

int visit(vector<int>& nums) {
  if (nums.empty()) {
    return 0;
  }
  int size = nums.size();
  if (size == 1) {
    return nums[0];
  }
  vector<int> dp = vector<int>(size, 0);
  dp[0] = nums[0];
  dp[1] = max(nums[0], nums[1]);

  for (int i = 2; i < size; i++) {
    dp[i] = ______; // 在此处填写代码
  }

  return dp[size - 1];
}
A

dp[i] = dp[i - 1] + nums[i];

B

dp[i] = max(dp[i - 1], dp[i - 2] * nums[i]);

C

dp[i] = max(dp[i - 1], dp[i - 2] + nums[i]);

D

dp[i] = dp[i - 2] + nums[i];

提交0次 正确率0.00%
答案解析