121.买卖股票的最佳时机1
int maxProfit(int* prices, int pricesSize) {
if(pricesSize==0) return 0;
int dp[pricesSize][2];//第i+1天不持有/持有股票最大收益
dp[0][0]=0;
dp[0][1]=-prices[0];
for(int i=1;i<pricesSize;i++){
dp[i][0]=fmax(dp[i-1][0],dp[i-1][1]+prices[i]);
dp[i][1]=fmax(dp[i-1][1],-prices[i]);//是-prices[i]而不是dp[i-1][0]-prices[i]
//printf("i=%d,dp[i][0]=%d,dp[i][1]=%d\n",i,dp[i][0],dp[i][1]);
}
return dp[pricesSize-1][0];//不持有收益一定大于持有(卖了才能换钱)
}
122.买卖股票的最佳时机II
int maxProfit(int* prices, int pricesSize) {
int dp[pricesSize][2];
dp[0][0]=0;
dp[0][1]=-prices[0];
for(int i=1;i<pricesSize;i++){
dp[i][0]=fmax(dp[i-1][0],dp[i-1][1]+prices[i]);
dp[i][1]=fmax(dp[i-1][1],dp[i-1][0]-prices[i]);//区别于股票时机|
printf("i=%d,dp[i][0]=%d,dp[i][1]=%d\n",i,dp[i][0],dp[i][1]);
}
return dp[pricesSize-1][0];
}