zoukankan      html  css  js  c++  java
  • 至多可以交易k次的股票交易 (c++)

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <string.h>
     4 using namespace std;
     5 
     6 const int Maxlen=1e5;
     7 int prices[Maxlen];
     8 int  n,k;
     9 
    10 int quickSolve(){
    11     //as long as there is a price gap ,we gain a profit
    12     int profit=0;
    13     for(int i=1;i<n;i++)
    14         if(prices[i] > prices[i-1]) profit+=prices[i]-prices[i-1];
    15     return profit;
    16 }
    17 
    18 int MaxProfit(){
    19     int i,j;
    20     if(n == 0)
    21         return 0;
    22     else if(n/2 < k)
    23         return quickSolve();//避免k过大所引起的超时的问题    
    24     int buy[Maxlen],sell[Maxlen];
    25     for(i=0;i<n;i++){
    26         buy[i]=-0x3f3f3f;
    27         sell[i]=0;
    28     }
    29     //初始化
    30 
    31     for(i=0;i<n;i++){
    32         for(j=1;j<=k;j++){
    33             buy[j]=max(buy[j],sell[j-1]-prices[i]);
    34             sell[j]=max(sell[j],buy[j]+prices[i]);
    35         }
    36     }
    37     return sell[k];
    38 }
    39 
    40 
    41 int main(){
    42     
    43     //依然是股票交易问题 但是至多只能交易k次
    44     //使用的核心算法是动态规划 
    45     //核心思路是用两个数组buy和sell分别表示第i次买入交易的最大收益和第i次卖出的最大收益知
    46     //DP状态转移方程
    47     //buy[j]=max(buy[j] , sell[j-1] - prices[i] );//在第i点处进行第j次买入交易
    48     //sell[j]=max(sell[j],buy[j]+prices[i]);//在第i点处进行第j次卖出交易
    49     //此时,用quicksolve函数来解决若k太大引起的超时问题,简化到允许到多次交易的问题
    50     int i,j;
    51     while(~scanf("%d %d",&n,&k)){
    52         for(i=0;i<n;i++)
    53             scanf("%d",&prices[i]);
    54         printf("%d
    ",MaxProfit());
    55     }
    56     return 0;
    57 }
  • 相关阅读:
    go基础1:Hello world与变量声明
    linux 根据端口号查看占用进程的pid
    攻防世界web新手练习区WP
    github下载慢解决方法
    玩转MSFconsole
    中国蚁剑AntSword安装
    burpsuite出现Payload set 1: Invalid number settings的解决办法
    在同一台电脑上同时安装Python2和Python3
    msf转移木马进程
    网站后台爆破工具:WebCrack
  • 原文地址:https://www.cnblogs.com/visper/p/10046244.html
Copyright © 2011-2022 走看看