思路
当前每一个草堆都存在两种状态:吃 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]); } }