2023-09-16力扣每日一题-经典DP

链接:

198. 打家劫舍

题意

有n个数字,不能选取相邻的数字,求最终选取的最大

经典DP,由于每个数字有拿与不拿两种状态,所以DP[I]刚好使用一个max

拿,则DP[I-1]不能拿,为DP[I-2]+nums[i]

不拿,则DP[i-1]可以拿,为DP[i-1]

两者取max

实际代码:

#include
using namespace std;
int rob(vector& nums)
{
	int lg=nums.size();
	if(lg==1) return nums[0];

	vectordp(lg);
	dp[0]=nums[0];dp[1]=max(nums[0],nums[1]);

 	for(int i=2;i

限制:

  • 1 <= nums.length <= 100
  • 0 <= nums[i] <= 400

你可能感兴趣的:(力扣每日一题,leetcode,算法)