链接:
题意
n个数字围成一圈,禁止取相邻,求能取到的最大值
解:
经典DP+特判/一丢丢思维
可以开个bool判断第一个取没取,然后判断最后一个,同样,再倒着做一遍即可
思维:把0到lg-2 和 1到lg-1各做一遍即可
实际代码:
#include
using namespace std;
int rob(vector& nums)
{
int lg=nums.size();
vectornums1(lg),nums2(lg);
if(lg==1) return nums[0];
if(lg==2) return max(nums[0],nums[1]);
nums1[0]=nums[0];nums1[1]=max(nums[0],nums[1]);
for(int i=2;i
限制:
1 <= nums.length <= 100
0 <= nums[i] <= 1000