思路

当前每一个草堆都存在两种状态:吃 OR 不吃,且吃不吃与上一个草堆的状态相关联,如果假设我们前一个草堆的选择后的结果已知,那么这就是一个很明显的动态规划问题。

设dp[i][0]表示当前草堆不吃时的最高饱腹度;
dp[i][1]表示当前草堆吃时的最高饱腹度

那么状态转移方程为:
dp[i][0] = max(dp[i-1][1],dp[i-1][0])
dp[i][1] = dp[i-1][0] + nums[i]
import java.util.*;


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

        return Math.max(dp[len][0],dp[len][1]);
    }
}