class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型vector
     * @return int整型
     */
    int eatGrass(vector<int>& nums) {
        // write code here
        int n = nums.size();
        int dp[10000];
        dp[0] = nums[0];
        dp[1] = max(nums[0], nums[1]);
        for (int i = 2; i < n; ++i)
            dp[i] = max(dp[i - 1], dp[i - 2] + nums[i]);
        return dp[n - 1];
    }
};

一、题目考察的知识点

dp

二、题目解答方法的文字分析

dp就是在选与不选之间谋求一个最大值

状态转移方程:dp[i] = max(dp[i - 1], dp[i - 2] + nums[i]);

三、本题解析所用的编程语言

c++