买卖股票的最佳时机三贪心法c语言
时间: 2023-10-07 14:11:11 浏览: 92
以下是使用贪心法(C语言)解决买卖股票的最佳时机 III 的一个示例代码:
```c
#include <stdio.h>
#include <limits.h>
int maxProfit(int prices[], int n) {
int buy1 = INT_MAX, buy2 = INT_MAX;
int sell1 = 0, sell2 = 0;
for (int i = 0; i < n; i++) {
// 第一次买入的最低价格
buy1 = buy1 < prices[i] ? buy1 : prices[i];
// 第一次卖出的最大利润
sell1 = sell1 > prices[i] - buy1 ? sell1 : prices[i] - buy1;
// 第二次买入的最低价格(第一次卖出后剩余的钱买入)
buy2 = buy2 < prices[i] - sell1 ? buy2 : prices[i] - sell1;
// 第二次卖出的最大利润
sell2 = sell2 > prices[i] - buy2 ? sell2 : prices[i] - buy2;
}
return sell2;
}
int main() {
int prices[] = {3, 3, 5, 0, 0, 3, 1, 4};
int n = sizeof(prices) / sizeof(prices[0]);
int maxProfitValue = maxProfit(prices, n);
printf("Max Profit: %d\n", maxProfitValue);
return 0;
}
```
这个示例代码中,maxProfit函数接受一个整数数组prices和数组的长度n作为参数,返回买卖股票的最大利润。
我们使用四个变量来追踪买入和卖出的价格和利润。通过遍历价格数组,我们更新这些变量的值来寻找最佳的买卖时机。最后返回第二次卖出的最大利润,即为最佳时机三的最大利润。
在主函数中,我们使用示例数据调用maxProfit函数并打印结果。
请注意,这只是一个示例代码,实际应用中可能需要进行更多的边界检查和错误处理。
阅读全文