题解 | #不能连续吃草的牛#
不能连续吃草的牛
https://www.nowcoder.com/practice/64d9400c321042acb754a9455852a8d7
知识点:
动态规划
分析:
状态表示:
1.f[i]表示吃第i块草的时候的最高饱腹感值。
3.属性:max,最高/最大
状态计算:
f[i]两种情况:
1.如果吃当前i块草的话,那么f[i] = f[i-2] + nums[i] 相邻的草不可以吃
2.如果不吃当前草的话,那么f[i]= f[i-1]
所以f[i] = max(f[i-2] + nums[i], f[i]= f[i-1])
编程语言:
C++
完整代码:
int eatGrass(vector<int>& nums) {
if (nums.size() == 0) return 0;
if (nums.size() == 1) return nums[0];
vector<int> f(nums.size());
f[0] = nums[0];
f[1] = max(nums[0], nums[1]);
for (int i = 2; i < nums.size(); i++) {
dp[i] = max(f[i - 2] + nums[i], f[i - 1]);
}
return f[nums.size() - 1];
}
