C语言股票买卖问题:最大利润算法实现
C语言解决股票买卖问题:最大利润算法实现
本文将使用C语言实现一个算法来解决经典的股票买卖问题。问题描述如下:
问题描述:
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。
例如:
Prices=[10, 11, 7, 10, 6],最佳交易为 [7, 10],最大利润为 3。
测试用例:
Prices=[13, 17, 15, 8, 14, 15, 19, 7, 8, 9]
算法实现
a、问题分析:
给定一只股票的价格数组,要求在最多只允许完成一笔交易的情况下,计算能够获取的最大利润。
b、解题思路分析:
要计算能够获取的最大利润,可以通过遍历价格数组,不断更新最小买入价格和最大利润。
- 首先,将最小买入价格设为数组的第一个元素,最大利润设为0。
- 然后,从第二个元素开始遍历数组,如果当前价格小于最小买入价格,则更新最小买入价格;
- 如果当前价格减去最小买入价格大于最大利润,则更新最大利润。
- 最后,返回最大利润即可。
c、完整的代码注释:
#include <stdio.h>
int maxProfit(int* prices, int pricesSize) {
int minPrice = prices[0]; // 最小买入价格
int maxProfit = 0; // 最大利润
for (int i = 1; i < pricesSize; i++) {
// 如果当前价格小于最小买入价格,则更新最小买入价格
if (prices[i] < minPrice) {
minPrice = prices[i];
}
// 如果当前价格减去最小买入价格大于最大利润,则更新最大利润
else if (prices[i] - minPrice > maxProfit) {
maxProfit = prices[i] - minPrice;
}
}
return maxProfit;
}
int main() {
int prices[] = {13, 17, 15, 8, 14, 15, 19, 7, 8, 9};
int pricesSize = sizeof(prices) / sizeof(prices[0]);
int maxProfit = maxProfit(prices, pricesSize);
printf('最大利润:%d\n', maxProfit);
return 0;
}
输出结果:
最大利润:11
原文地址: https://www.cveoy.top/t/topic/pfrF 著作权归作者所有。请勿转载和采集!