话不多说,直接上代码
package cn.texous.demo.test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
public class TestShortWay {
public static void main(String[] args) {
int row = 5, column = 5;
Integer[][] integer = generatorArray(row, column);
minimumPlannedPathOne(row, column, integer);
minimumPlannedPathAllFirst(row, column, integer);
minimumPlannedPathAllSecond(row, column, integer);
}
private static void minimumPlannedPathAllSecond(int row, int column, Integer[][] integer) {
Integer[][] min = new Integer[row][column];
Map<String, List<String>> way = new HashMap<>();
min[0][0] = integer[0][0];
way.put("0,0", Collections.singletonList("0,0"));
for (int r = 1; r < row; r++) {
min[r][0] = integer[r][0] + min[r - 1][0];
String preWay = (r - 1) + ",0";
String point = r + ",0";
way.put(point, generatePlannedPath(way.get(preWay), point));
}
for (int c = 1; c < column; c++) {
min[0][c] = integer[0][c] + min[0][c - 1];
String preWay = "0," + (c - 1);
String point = "0," + c;
way.put(point, generatePlannedPath(way.get(preWay), point));
}
for (int r = 1; r < row; r++) {
for (int c = 1; c < column; c++) {
String point = r + "," + c;
int minValue = Math.min(min[r][c - 1], min[r - 1][c]);
min[r][c] = integer[r][c] + minValue;
String preWay