• 动态规划--股市买入卖出时间点选择问题


    题目:

    给你一个股价序列,告诉你每个时间点的股价,问你什么时候买什么时候卖获利最大。时间复杂度越低越好。

    int max_difference(const vector<int>& arr)
    {
        if (arr.size()>=2)
        {
            int MIN=min(arr[0],arr[1]);
            int MAX_DIFFERENCE=arr[1]-arr[0];//第一个被求出的差值,暂时作为最大的差值
            for (vector<int>::size_type i=2;i<arr.size();i++)
            {
                if (arr[i]-MIN>MAX_DIFFERENCE)
                {
                    MAX_DIFFERENCE=arr[i]-MIN;
                }
                if (arr[i]<MIN)
                {
                    MIN=arr[i];//影响新的差值的关键在于已经找到的当前的最小元素是谁,只要将当前值减去这个最小元素就能更新MAX_DIFFERENCE
                }
            }
            return MAX_DIFFERENCE;
        }
        else
        {
            cout<<"size of arr is too small";
            return 0;
        }
        
    }
    void give_result(int a[],int n)
    {
        vector<int> arr(a,a+n);
        print(arr.begin(),arr.end());
        print(max_difference(arr));
    }
    int main( void ) 
    {
        int a0[]={7,9,10};
        give_result(a0,3);
        int a1[]={10,9,7};
        give_result(a1,3);
        int a[]={3,10,1,9};
        give_result(a,4);
        int a2[]={3,9,2,10,1,8};
        give_result(a2,6);
        return 0;
    }
  • 相关阅读:
    MySQL的备份
    Linux下MySQL安装及配置
    MySQL的优化
    MySQL的基本操作
    python文件操作练习之文件备份
    文件操作练习之统计目录大小
    SQLite
    PyMySQL模块
    python语法练习题之九九乘法表
    类装饰器
  • 原文地址:https://www.cnblogs.com/bendantuohai/p/4750682.html
Copyright © 2020-2023  润新知