File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree 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+ }
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+ // 2 = 1+1 3 = 1+2 4=2+2 5=2+3 6=3+3
8+ public static void main (String [] args ) {
9+ System .out .println (integerBreak (10 ));
10+ }
11+ public static int integerBreak (int n ) {
12+ if (n == 1 || n == 0 )return 0 ;
13+ int []dp = new int [n + 1 ];
14+ dp [0 ] = 0 ;
15+ dp [1 ] = 1 ;
16+ dp [2 ] = 1 ;
17+ for (int i = 3 ;i <= n ;i ++) {
18+ for (int j = 1 ;j < i ;j ++ ) {
19+ dp [i ] = Math .max (dp [i ],dp [j ] * (i - j ));
20+ if ((i -j ) * j > dp [i ] ) dp [i ] = (i - j ) * j ;
21+ }
22+ }
23+ return dp [n ];
24+ }
25+ }
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 static void main (String [] args ) {
8+ System .out .println (numSquares (12 ));
9+ }
10+ public static int numSquares (int n ) {
11+ int []dp = new int [n + 1 ];
12+ dp [1 ] = 1 ;
13+ for (int i = 2 ;i <= n ;i ++) {
14+ //默认等于前一位+1
15+ dp [i ] = dp [i - 1 ] + 1 ;
16+ if (isSquare (i )) {
17+ dp [i ] = 1 ;
18+ continue ;
19+ }
20+ //当差为平方数时直接 等于其+1即可。这样的时间复杂度大大降低。
21+ //为onlogn.否则是on2不符合要求
22+ for (int j = 1 ;j * j < i ;j ++) {
23+ dp [i ] = Math .min (dp [i ], dp [i - j * j ] + 1 );
24+ }
25+ }
26+ return dp [n ];
27+ }
28+ public static boolean isSquare (int n ) {
29+ if (Math .ceil (Math .pow (n ,0.5 )) == Math .pow (n ,0.5 )) {
30+ return true ;
31+ }
32+ return false ;
33+ }
34+ }
You can’t perform that action at this time.
0 commit comments