股票的最大利润
一只股票在某些时间节点的价格{9,11,8,5,7,12,16,14},求在哪个时间锻买入和卖出,利润最大。
思路:找出数组中最大值和最小值问题。定义函数diff(i)为第i天卖出的最大利润,那么只需要在求第i天的时候记住前面i-1天的最小值。
参考代码:
root@gt:/home/git/Code# ./a.out max:11
root@gt:/home/git/Code# cat diff.c #include <stdio.h>
int diff(int* num,int len)
{
if(num == NULL || len < 2)
return 0;
int min = num[0];
int max = num[1] - min;
for(int i = 2;i < len;++i)
{
if(num[i - 1] < min)
min = num[i - 1];
int currdiff = num[i] - min;
if(currdiff > max)
max = currdiff;
}
return max;
}
int main()
{
int num[] = {9,11,8,5,7,12,16,14};
int res = diff(num,sizeof(num)/sizeof(int));
printf("max:%d\n",res);
return 0;
}