码迷,mamicode.com
首页 > 其他好文 > 详细

最佳买卖股票时间

时间:2015-10-10 10:25:48      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

题目:

给出一个数组,第i个数代表第i天的价格,请选择一种策略,使得收益最大。每天仅能买卖一次

答案:

// 找出所有上涨区间,每个区间的第一天买、最后一天卖

// 输入int a[], length

bool hasPos = false; // 是否有持仓

for (int i = 0; i < length - 1; i++)
{
  if (a[i + 1] < a[i])      // 明天价格下跌
  {
    if (hasPos) a[i] = -1; // 如果有持仓就卖
    else a[i] = 0;     // 没有持仓就不动
    hasPos = false;
  }
  else if (a[i + 1] > a[i])   // 明天价格上涨
  {
    if (hasPos) a[i] = 0;  // 有持仓就不动
    else a[i] = 1;      // 没有持仓就赶紧买
    hasPos = true;
  }
  else a[i] = 0;      // 价格不变就不动
}


a[length - 1] = hasPos ? -1 : 0; // 最后一天,有持仓就卖了

// 得到一组[0, 1, 0, 0, -1, ...]的结果,遇到1就买入,遇到-1就卖出

最佳买卖股票时间

标签:

原文地址:http://www.cnblogs.com/anderslane/p/4865739.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!