题解 | #不能连续吃草的牛#
不能连续吃草的牛
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]; }