From a7f7f0bf191a95b091710b303605ac7229ad0bb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B7=A6=E7=A8=8B=E4=BA=91?= Date: Tue, 12 Jan 2021 22:50:04 +0800 Subject: [PATCH] modify code --- src/class21/Code01_MinPathSum.java | 33 +++++++++---------- .../Code02_CoinsWayEveryPaperDifferent.java | 3 +- src/class21/Code03_CoinsWayNoLimit.java | 3 +- .../Code04_CoinsWaySameValueSamePapper.java | 2 ++ .../Code05_BobDie.java} | 7 ++-- ...llMonster.java => Code01_KillMonster.java} | 2 +- ...Limit.java => Code02_MinCoinsNoLimit.java} | 2 +- .../Code03_SplitSumClosed.java} | 4 +-- .../Code04_SplitSumClosedSizeHalf.java} | 4 +-- ...ode03_NQueens.java => Code01_NQueens.java} | 2 +- .../Code02_MinCoinsOnePaper.java} | 4 +-- 11 files changed, 35 insertions(+), 31 deletions(-) rename src/{class22/Code01_BobDie.java => class21/Code05_BobDie.java} (86%) rename src/class22/{Code02_KillMonster.java => Code01_KillMonster.java} (98%) rename src/class22/{Code03_MinCoinsNoLimit.java => Code02_MinCoinsNoLimit.java} (98%) rename src/{class23/Code01_SplitSumClosed.java => class22/Code03_SplitSumClosed.java} (97%) rename src/{class23/Code02_SplitSumClosedSizeHalf.java => class22/Code04_SplitSumClosedSizeHalf.java} (97%) rename src/class23/{Code03_NQueens.java => Code01_NQueens.java} (98%) rename src/{class22/Code04_MinCoinsOnePaper.java => class23/Code02_MinCoinsOnePaper.java} (99%) diff --git a/src/class21/Code01_MinPathSum.java b/src/class21/Code01_MinPathSum.java index 0d9ea24..c537438 100644 --- a/src/class21/Code01_MinPathSum.java +++ b/src/class21/Code01_MinPathSum.java @@ -28,22 +28,20 @@ public class Code01_MinPathSum { if (m == null || m.length == 0 || m[0] == null || m[0].length == 0) { return 0; } - int more = Math.max(m.length, m[0].length); // �����������ϴ���Ǹ�Ϊmore - int less = Math.min(m.length, m[0].length); // ������������С���Ǹ�Ϊless - boolean rowmore = more == m.length; // �����Dz��Ǵ��ڵ������� - int[] arr = new int[less]; // ��������ij��Ƚ�Ϊ�����������е���Сֵ - arr[0] = m[0][0]; - for (int i = 1; i < less; i++) { - arr[i] = arr[i - 1] + (rowmore ? m[0][i] : m[i][0]); + int row = m.length; + int col = m[0].length; + int[] dp = new int[col]; + dp[0] = m[0][0]; + for (int j = 1; j < col; j++) { + dp[j] = dp[j - 1] + m[0][j]; } - for (int i = 1; i < more; i++) { - arr[0] = arr[0] + (rowmore ? m[i][0] : m[0][i]); - for (int j = 1; j < less; j++) { - arr[j] = Math.min(arr[j - 1], arr[j]) - + (rowmore ? m[i][j] : m[j][i]); + for (int i = 1; i < row; i++) { + dp[0] += m[i][0]; + for (int j = 1; j < col; j++) { + dp[j] = Math.min(dp[j - 1], dp[j]) + m[i][j]; } } - return arr[less - 1]; + return dp[col - 1]; } // for test @@ -54,7 +52,7 @@ public class Code01_MinPathSum { int[][] result = new int[rowSize][colSize]; for (int i = 0; i != result.length; i++) { for (int j = 0; j != result[0].length; j++) { - result[i][j] = (int) (Math.random() * 10); + result[i][j] = (int) (Math.random() * 100); } } return result; @@ -71,10 +69,9 @@ public class Code01_MinPathSum { } public static void main(String[] args) { - // int[][] m = generateRandomMatrix(3, 4); - int[][] m = { { 1, 3, 5, 9 }, { 8, 1, 3, 4 }, { 5, 0, 6, 1 }, - { 8, 8, 4, 0 } }; - printMatrix(m); + int rowSize = 10; + int colSize = 10; + int[][] m = generateRandomMatrix(rowSize, colSize); System.out.println(minPathSum1(m)); System.out.println(minPathSum2(m)); diff --git a/src/class21/Code02_CoinsWayEveryPaperDifferent.java b/src/class21/Code02_CoinsWayEveryPaperDifferent.java index 552e95e..a162b06 100644 --- a/src/class21/Code02_CoinsWayEveryPaperDifferent.java +++ b/src/class21/Code02_CoinsWayEveryPaperDifferent.java @@ -6,11 +6,12 @@ public class Code02_CoinsWayEveryPaperDifferent { return process(arr, 0, aim); } + // arr[index....] 组成正好rest这么多的钱,有几种方法 public static int process(int[] arr, int index, int rest) { if (rest < 0) { return 0; } - if (index == arr.length) { + if (index == arr.length) { // 没钱了! return rest == 0 ? 1 : 0; } else { return process(arr, index + 1, rest) + process(arr, index + 1, rest - arr[index]); diff --git a/src/class21/Code03_CoinsWayNoLimit.java b/src/class21/Code03_CoinsWayNoLimit.java index 820ced0..7759d9c 100644 --- a/src/class21/Code03_CoinsWayNoLimit.java +++ b/src/class21/Code03_CoinsWayNoLimit.java @@ -9,8 +9,9 @@ public class Code03_CoinsWayNoLimit { return process(arr, 0, aim); } + // arr[index....] 所有的面值,每一个面值都可以任意选择张数,组成正好rest这么多钱,方法数多少? public static int process(int[] arr, int index, int rest) { - if (index == arr.length) { + if (index == arr.length) { // 没钱了 return rest == 0 ? 1 : 0; } int ways = 0; diff --git a/src/class21/Code04_CoinsWaySameValueSamePapper.java b/src/class21/Code04_CoinsWaySameValueSamePapper.java index ad46f82..f45c919 100644 --- a/src/class21/Code04_CoinsWaySameValueSamePapper.java +++ b/src/class21/Code04_CoinsWaySameValueSamePapper.java @@ -43,6 +43,8 @@ public class Code04_CoinsWaySameValueSamePapper { return process(info.coins, info.zhangs, 0, aim); } + // coins 面值数组,正数且去重 + // zhangs 每种面值对应的张数 public static int process(int[] coins, int[] zhangs, int index, int rest) { if (index == coins.length) { return rest == 0 ? 1 : 0; diff --git a/src/class22/Code01_BobDie.java b/src/class21/Code05_BobDie.java similarity index 86% rename from src/class22/Code01_BobDie.java rename to src/class21/Code05_BobDie.java index ba68e3a..439fffe 100644 --- a/src/class22/Code01_BobDie.java +++ b/src/class21/Code05_BobDie.java @@ -1,18 +1,21 @@ -package class22; +package class21; -public class Code01_BobDie { +public class Code05_BobDie { public static double livePosibility1(int row, int col, int k, int N, int M) { return (double) process(row, col, k, N, M) / Math.pow(4, k); } + // 目前在row,col位置,还有rest步要走,走完了如果还在棋盘中就获得1个生存点,返回总的生存点数 public static long process(int row, int col, int rest, int N, int M) { if (row < 0 || row == N || col < 0 || col == M) { return 0; } + // 还在棋盘中! if (rest == 0) { return 1; } + // 还在棋盘中!还有步数要走 long up = process(row - 1, col, rest - 1, N, M); long down = process(row + 1, col, rest - 1, N, M); long left = process(row, col - 1, rest - 1, N, M); diff --git a/src/class22/Code02_KillMonster.java b/src/class22/Code01_KillMonster.java similarity index 98% rename from src/class22/Code02_KillMonster.java rename to src/class22/Code01_KillMonster.java index 3465ab2..7a0756b 100644 --- a/src/class22/Code02_KillMonster.java +++ b/src/class22/Code01_KillMonster.java @@ -1,6 +1,6 @@ package class22; -public class Code02_KillMonster { +public class Code01_KillMonster { public static double right1(int N, int M, int K) { if (N < 1 || M < 1 || K < 1) { diff --git a/src/class22/Code03_MinCoinsNoLimit.java b/src/class22/Code02_MinCoinsNoLimit.java similarity index 98% rename from src/class22/Code03_MinCoinsNoLimit.java rename to src/class22/Code02_MinCoinsNoLimit.java index d4c2641..4884d86 100644 --- a/src/class22/Code03_MinCoinsNoLimit.java +++ b/src/class22/Code02_MinCoinsNoLimit.java @@ -1,6 +1,6 @@ package class22; -public class Code03_MinCoinsNoLimit { +public class Code02_MinCoinsNoLimit { public static int minCoins(int[] arr, int aim) { return process(arr, 0, aim); diff --git a/src/class23/Code01_SplitSumClosed.java b/src/class22/Code03_SplitSumClosed.java similarity index 97% rename from src/class23/Code01_SplitSumClosed.java rename to src/class22/Code03_SplitSumClosed.java index 605c930..85ce147 100644 --- a/src/class23/Code01_SplitSumClosed.java +++ b/src/class22/Code03_SplitSumClosed.java @@ -1,8 +1,8 @@ -package class23; +package class22; import java.util.TreeSet; -public class Code01_SplitSumClosed { +public class Code03_SplitSumClosed { public static int right(int[] arr) { if (arr == null || arr.length < 2) { diff --git a/src/class23/Code02_SplitSumClosedSizeHalf.java b/src/class22/Code04_SplitSumClosedSizeHalf.java similarity index 97% rename from src/class23/Code02_SplitSumClosedSizeHalf.java rename to src/class22/Code04_SplitSumClosedSizeHalf.java index 2930349..42d4d79 100644 --- a/src/class23/Code02_SplitSumClosedSizeHalf.java +++ b/src/class22/Code04_SplitSumClosedSizeHalf.java @@ -1,8 +1,8 @@ -package class23; +package class22; import java.util.TreeSet; -public class Code02_SplitSumClosedSizeHalf { +public class Code04_SplitSumClosedSizeHalf { public static int right(int[] arr) { if (arr == null || arr.length < 2) { diff --git a/src/class23/Code03_NQueens.java b/src/class23/Code01_NQueens.java similarity index 98% rename from src/class23/Code03_NQueens.java rename to src/class23/Code01_NQueens.java index 9264e0c..7fd3cfb 100644 --- a/src/class23/Code03_NQueens.java +++ b/src/class23/Code01_NQueens.java @@ -1,6 +1,6 @@ package class23; -public class Code03_NQueens { +public class Code01_NQueens { public static int num1(int n) { if (n < 1) { diff --git a/src/class22/Code04_MinCoinsOnePaper.java b/src/class23/Code02_MinCoinsOnePaper.java similarity index 99% rename from src/class22/Code04_MinCoinsOnePaper.java rename to src/class23/Code02_MinCoinsOnePaper.java index 5b6ab11..841b0ff 100644 --- a/src/class22/Code04_MinCoinsOnePaper.java +++ b/src/class23/Code02_MinCoinsOnePaper.java @@ -1,10 +1,10 @@ -package class22; +package class23; import java.util.HashMap; import java.util.Map.Entry; import java.util.LinkedList; -public class Code04_MinCoinsOnePaper { +public class Code02_MinCoinsOnePaper { public static int minCoins(int[] arr, int aim) { return process(arr, 0, aim);