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



京公网安备 11010502036488号