题解 | #不能连续吃草的牛#
不能连续吃草的牛
https://www.nowcoder.com/practice/64d9400c321042acb754a9455852a8d7
题目考察的知识点:动态规划
题目解答方法的文字分析:dp数组存放最大的数,每次遍历只要加上前面不相邻数的最大值,用m表示不相邻的最大数。
本题解析所用的编程语言:c++
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @return int整型
*/
int eatGrass(vector<int>& nums)
{
// write code here
int n = nums.size();
vector<int> dp(n);
if (n == 1)
return nums[0];
dp[0] = nums[0], dp[1] = nums[1];
int m = dp[0];
for (int i = 2; i < n; ++i)
{
dp[i] = nums[i] + m;
if (m < dp[i - 1])
m = dp[i - 1];
}
return max(dp[n-1], dp[n-2]);
}
};


