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

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

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

相关推荐

浩浩没烦恼:一二面加起来才一个小时? 我一面就一个小时多了
点赞 评论 收藏
分享
10-15 10:23
门头沟学院 Java
牛可乐的头像真牛:赶紧举报,这公司绝对是诈骗的,等你签约后工作一两个月后根据合同漏洞把你开除,并且要求你赔偿3w培训费,996是为了提前筛选心甘情愿签下合同容易受骗的群体,纯粹面向校招生精心设计的骗局
你见过哪些工贼行为
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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