其实还是不是很理解,在这里记录下,多看几次就,后面肯定就懂啦。 dp[i][0] 表示第 i 天交易完成后手里没有股票的最大利润 dp[i][1] 表示第 i 天交易完成后手里持有一只股票的最大利润
int maxProfit(int* prices, int pricesSize)
{
int i;
int dp[pricesSize][2];
// dp[i][0] 表示第 i 天交易完成后手里没有股票的最大利润
// dp[i][1] 表示第 i 天交易完成后手里持有一只股票的最大利润
dp[0][0] = 0,dp[0][1] = -prices[0];
for (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]);
}
return dp[pricesSize-1][0];
}
int main() {
int x;
int num[] = {1,5,5,5,5,5,6};
int res = maxProfit(num,7);
printf("%d",res);
return 0;
}