题目考察的知识点

考察动态规划的应用

题目解答方法的文字分析

分析题目,可以使用动态规划来解决。设置dp数组来表示最高的饱腹感,即dp[i]表示吃到第i块草的时候能获得的最高的饱腹感的值。设置初始值之后,从i=2开始之后,i位置的dp值由i-1吃草i位置不吃草以及i-2位置吃草加上i位置吃草两种情况取最高值而决定,即代码19行。最后返回最后一个dp数组的值即可。

本题解析所用的编程语言

使用Java代码解答

完整且正确的编程代码

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型一维数组 
     * @return int整型
     */
    public int eatGrass (int[] nums) {
        // write code here
        if(nums.length==1) return nums[0]; //特殊情况处理
        int[] dp = new int[nums.length]; //dp[i]表示吃到第i块草的时候能获得的最高的饱腹感的值
        dp[0] = nums[0];
        dp[1] = Math.max(nums[0],nums[1]);
        for(int i=2; i<nums.length; i++){
            dp[i] = Math.max(dp[i-2]+nums[i],dp[i-1]);
        }
        return dp[nums.length-1];
    }
}