题解 | #买卖股票的最好时机(二)#

买卖股票的最好时机(二)

http://www.nowcoder.com/practice/fbc5dad3e215457fb82a3ae688eb7281

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] prices = new int[n];
        for ( int i=0;i<n;i++){
            prices[i] = sc.nextInt();
        }
        int[][] dp = new int[n][2]; //可以理解为利润
        dp[0][0] = -prices[0]; //第一天买入
        dp[0][1] = 0;          //第一天卖出
        for ( int i=1; i<n; i++){
            //第i天买入的最佳策略是比较前一天买入或者前一天卖出现在买入的比较
            dp[i][0] = Math.max(dp[i-1][0],dp[i-1][1]-prices[i]);
            //第i天卖出的最佳策略是比较前一天买入现在卖出的利润或者前一天空仓的比较
            dp[i][1] = Math.max(dp[i-1][0]+prices[i],dp[i-1][1]);
        }
        System.out.println(dp[n-1][1]);
    }
}
全部评论
dp[n][0] 和dp[n][1]表示的状态描述不太准确呀(可以买,可以卖,也可以什么都不干)当天是否还持有股票这种描述应该更恰当
点赞 回复 分享
发布于 2022-03-02 15:56

相关推荐

不愿透露姓名的神秘牛友
昨天 13:54
点赞 评论 收藏
分享
zhch7:建议9✌️把学历加黑加粗,如果实在offer可能是觉得佬不会去
投了多少份简历才上岸
点赞 评论 收藏
分享
那一天的Java_J...:他本来公司就是做这个的,不就是正常的游戏客户端和服务器开发,软硬件联动,有啥恶心不恶心的,提前告诉你就是怕你接受不了,接受不了就没必要再往后走流程浪费时间,虽然这公司是一坨。
点赞 评论 收藏
分享
今天 10:56
门头沟学院 Java
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务