题目考察的知识点
考察动态规划的应用
题目解答方法的文字分析
分析题目,可以使用动态规划来解决。设置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]; } }