File tree Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Original file line number Diff line number Diff line change
1
+ package DP .其他问题如股票 ;
2
+
3
+ /**
4
+ * Created by 周杰伦 on 2018/4/9.
5
+ */
6
+ public class 需要冷却期的股票交易 {
7
+ public int maxProfit (int [] prices ) {
8
+ if (prices .length < 2 )return 0 ;
9
+ if (prices .length == 2 )return prices [1 ] - prices [0 ];
10
+ if (prices .length == 3 ) {
11
+ int max = prices [1 ] - prices [0 ];
12
+ max = Math .max (prices [2 ] - prices [1 ], max );
13
+ max = Math .max (prices [2 ] - prices [0 ], max );
14
+ return max ;
15
+ }
16
+ //buy at i price and sell at j price and cooldown at j + 1
17
+ int [][]dp = new int [prices .length ][prices .length ];
18
+
19
+ dp [0 ][1 ] = prices [1 ] - prices [0 ];
20
+ for (int i = 0 ;i < prices .length ;i ++) {
21
+ for (int j = i + 1 ;j < prices .length ;j ++) {
22
+ if (i >= 3 ) {
23
+ dp [i ][j ] = Math .max (prices [j ] - prices [i - 3 ],
24
+ dp [i - 3 ][j - 3 ] + prices [j ] - prices [i ]);
25
+ }else {
26
+ dp [i ][j ] = dp [0 ][1 ];
27
+ }
28
+ }
29
+ }
30
+ for (int i = 4 ;i < prices .length ;i ++) {
31
+ dp [0 ][i ] = Math .max (prices [i ] - prices [0 ], dp [0 ][1 ] + dp [3 ][i ]);
32
+ }
33
+ int max = 0 ;
34
+ for (int i = 0 ;i < dp .length ;i ++) {
35
+ for (int j = i + 1 ;j < dp .length ;j ++) {
36
+
37
+ }
38
+ }
39
+ return max ;
40
+ }
41
+ }
You can’t perform that action at this time.
0 commit comments