动态规划思想:
- 问题能被分解为若干子问题
- 前子问题能为后子问题提供基础
核心:写出状态转移方程
121状态转移方程:dp[i]=MAX(dp[i-1],prices[i]-min);
int min=prices[0],max=0;//min记录前i-1天最低价格,max记录最高收益
for(int i=1;i<pricesSize;i++)
{
dp[i]=MAX(dp[i-1],prices[i]-min);
if(dp[i]>max) max=dp[i];
if(min>prices[i]) min=prices[i];
}
300状态转移方程:dp[i]=MAX(dp[j]+1,dp[i]);
for(int i=1;i<numsSize;i++)
{
for(int j=0;j<i;j++)
{
if(nums[j]<nums[i]) dp[i]=max(dp[j]+1,dp[i])
}
}