amazon 股票的最佳买入和卖出点

来源:互联网 发布:起诉淘宝店无中文标签 编辑:程序博客网 时间:2024/05/01 01:54
/*  * File:   stock_price.cpp * Author: hongbin * 给出一个股价序列,求出最佳的买入和卖出点, 也就是求序列后面的元素跟前面元素的最大值。 */#include <cstdlib>#include <iostream>#include <string.h>#include <stdlib.h>#include <stdio.h>using namespace std;//O(N^2)bool find_max_profit1(int stock_price[], int length, int& buy_index, int &sell_index ){  int max_profit=0;  int end=length-1;  int price_diff1=0;  bool find=false;  buy_index=sell_index=0;    if(length <2)      return find;   max_profit=stock_price[1]-stock_price[0];  for(int index=0; index < length-1; index++ )   for (int step=index+1;step < length; step++ )   {       price_diff1=stock_price[step]-stock_price[index];       if(price_diff1>max_profit)       {          max_profit= price_diff1;          buy_index=index;          sell_index=step;          find=true;       }    }  return find;  }//O(N)bool find_max_profit2(int stock_price[], int length, int& buy_index, int &sell_index ){  int max_profit=0;  int end=length-1;  int price_diff1=0,price_diff2=0;  bool find=false;    buy_index=sell_index=0;  if(length <2 )      return find;   max_profit=stock_price[1]-stock_price[0];     for(int index=0; index<end; index++ )  {    price_diff1=stock_price[index+1] -stock_price[index];    price_diff2=stock_price[index+1] -stock_price[buy_index];    if (price_diff2 > max_profit)    {      sell_index = index+1;      max_profit=price_diff2;      find=true;    }    if(price_diff1 >max_profit)       {  buy_index=index;          sell_index = index+1;          max_profit=price_diff1;         find=true;       }    }   return find;  }/* *  */int main(int argc, char** argv) {    int price[]={2,5,3,4,1,25,1,8,9};    int buy_index=0;    int sell_index=0;          find_max_profit2(price,9,buy_index,sell_index);     cout<<"find_max_profit_good find: buy index:"<<buy_index+1<<" sell index:"<<sell_index+1<<endl;     cout<<"profit is: "<<(price[sell_index]-price[buy_index])<<endl;           buy_index=sell_index=0;     //use another algorithm to do again      find_max_profit1(price,9,buy_index,sell_index);     cout<<"find_max_profit1: : buy index:"<<buy_index+1<<" sell index:"<<sell_index+1<<endl;     cout<<"profit is: "<<(price[sell_index]-price[buy_index])<<endl;                   return 0;}/*   */

0 0
原创粉丝点击