zoukankan      html  css  js  c++  java
  • 买入卖出股票四

    package Leetcode;
    /**
     * 给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。
    设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。
    注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
     */
    //思路:三维数组,注意初始化dp[0][i][0],和dp[0][i][1],dpw维度prices.length,k+1,2
    public class testKprofit {
        public static void main(String[] args) {
            int k=2;
            int []prices={3,2,6,5,0,3};
            System.out.println(maxProfit(k, prices));    
        }
        public static int maxProfit(int k, int[] prices) {
            if(prices.length==0) return 0;
            if(k>=prices.length/2){
                int [][]dp=new int[prices.length][2];
                dp[0][0]=0;
                dp[0][1]=-prices[0];
                for(int i=1;i<prices.length;i++){
                    dp[i][0]=Math.max(dp[i-1][0],dp[i-1][1]+prices[i]);
                    dp[i][1]=Math.max(dp[i-1][1], dp[i-1][0]-prices[i]);
                }
                return dp[prices.length-1][0];
                
            }
            int [][][]dp=new int[prices.length][k+1][2];
            // dp[0][0][0]=0;
            // dp[0][0][1]=-1000000;
            for (int i=0;i<=k;i++){
                dp[0][i][0]=0;
                dp[0][i][1]=-prices[0];
            }
    
            for(int i=1;i<prices.length;i++){
                for(int j=1;j<=k;j++){
                    dp[i][j][0]=Math.max(dp[i-1][j][0], dp[i-1][j][1]+prices[i]);
                    dp[i][j][1]=Math.max(dp[i-1][j][1], dp[i-1][j-1][0]-prices[i]);
                }
            }
    
            int ans = 0;
            for (int j = 0; j <= k; j++) 
                ans = Math.max(ans, dp[prices.length - 1][j][0]);
            return ans;
        }
    }
  • 相关阅读:
    不容易系列之(3)—— LELE的RPG难题(递推)
    亲和数(因子和)
    爬虫正式学习day2
    爬虫小练习:堆糖图片抓取--爬虫正式学习day1
    js笔记--高阶函数array的各种函数
    js笔记--高阶函数sort()
    js笔记--高阶函数filter()
    js笔记--高阶函数map() reduce()
    js笔记--方法
    js笔记--变量部分
  • 原文地址:https://www.cnblogs.com/jieyi/p/14201043.html
Copyright © 2011-2022 走看看