股票利润

来源:互联网 发布:网络神曲2016叫什么 编辑:程序博客网 时间:2024/04/28 04:57

在股市的交易日中,假设最多可进行两次买卖(即买和卖的次数均小于等于2),规则是必须一笔成交后进行另一笔(即买-卖-买-卖的顺序进行)。给出一天中的股票变化序列,请写一个程序计算一天可以获得的最大收益。请采用实践复杂度低的方法实现。

给定价格序列prices及它的长度n,请返回最大收益。保证长度小于等于500。

测试样例:[10,22,5,75,65,80],6返回:87
import java.util.Scanner;public class stock {/** * @param args */public static int maxprofit(int[] prices, int n){int firstBuy=Integer.MIN_VALUE;int firstSell=Integer.MIN_VALUE;int secondBuy=Integer.MIN_VALUE;int secondSell=Integer.MIN_VALUE;int profit=Integer.MIN_VALUE;for(int i=0;i<n;i++){firstBuy=Math.max(firstBuy, -prices[i]);firstSell=Math.max(firstSell, prices[i]+firstBuy);secondBuy=Math.max(secondBuy, firstSell-prices[i]);profit=Math.max(profit, prices[i]+secondBuy);}return profit;}public static void main(String[] args) {// TODO Auto-generated method stub           Scanner in=new Scanner(System.in);           String n=in.nextLine();           String a[]=n.split(",");           int len=a.length;           int[] prices=new int[len];           for(int i=0;i<len;i++){           prices[i]=Integer.parseInt(a[i]);        //   System.out.print(prices[i]);           }         //  System.out.print("sfd");           System.out.println(maxprofit(prices,len));}}


0 0
原创粉丝点击