动态规划实现买卖股票的最佳时间(C)
时间: 2024-01-07 13:22:38 浏览: 158
动态规划可以用来实现买卖股票的最佳时间。下面是一个使用动态规划解决该问题的C代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
int maxProfit(int* prices, int pricesSize) {
if (pricesSize <= 1) {
return 0;
}
int* dp = (int*)malloc(pricesSize * sizeof(int));
dp[0] = 0;
int minPrice = prices[0];
for (int i = 1; i < pricesSize; i++) {
dp[i] = dp[i-1] > prices[i] - minPrice ? dp[i-1] : prices[i] - minPrice;
minPrice = minPrice < prices[i] ? minPrice : prices[i];
}
int maxProfit = dp[pricesSize-1];
free(dp);
return maxProfit;
}
int main() {
int prices[] = {7, 1, 5, 3, 6, 4};
int pricesSize = sizeof(prices) / sizeof(prices[0]);
int result = maxProfit(prices, pricesSize);
printf("Max profit: %d\n", result); // 输出:5
return 0;
}
```
该代码中,我们使用一个动态规划数组dp来记录每一天的最大利润。我们同时使用一个变量minPrice来记录当前的最低股价。在遍历股价数组时,我们更新dp数组和minPrice,最后返回dp数组的最后一个元素作为最大利润。
阅读全文