#include <numeric> #include <vector> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @return int整型 */ int eatGrass(vector<int>& nums) { // write code here int len = nums.size(); // 从第一个下标开始算,不用算最后一位 vector<int> dp_0(len,0); // 从第二个下标开始算,最后一位也计算 vector<int> dp_1(len,0); for(int i=0; i<len; ++i) { if(i==0) dp_0[i] = nums[i]; if(i==1) { dp_0[i] = max(nums[i-1],nums[i]); dp_1[i] = nums[i]; } if(i==2) dp_1[i] = max(nums[i-1],nums[i]); if(i>1 && i<len-1) dp_0[i] = max(dp_0[i-1],dp_0[i-2]+nums[i]); if(i>2 && i<len) dp_1[i] = max(dp_1[i-1],dp_1[i-2]+nums[i]); } int _0 = *max_element(dp_0.begin(), dp_0.end()); int _1 = *max_element(dp_1.begin(), dp_1.end()); return max(_0,_1); } };