HDU 1385 Minimum Transport Cost
生活随笔
收集整理的這篇文章主要介紹了
HDU 1385 Minimum Transport Cost
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
HDU 1385 Minimum Transport Cost
- 我的WA代碼
- AC的代碼
我的WA代碼
我的大概思路就是,如果i->j,如果找到一個中間點k就直接簡單的將path[i][j]=k,這樣我們在遍歷的時候就可以直接找到中間點k,然后通過一個遞歸的中序遍歷的到i->k再到k->j這條路徑。但是錯了!!!
import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner;public class Main {private final static int INF = 9999999;// flodyprivate final static int[][] flody(int[][] map, int[] city, int n) {int[][] path = new int[n+1][n+1];for(int i=1;i<=n;i++) {Arrays.fill(path[i], -1);}int tmp;for(int k=1;k<=n;k++) {for(int i=1;i<=n;i++) {if(map[i][k] == INF)continue;for(int j=1;j<=n;j++) {tmp = map[i][k] + map[k][j]+city[k];if(map[i][j] > tmp) {map[i][j] = tmp;path[i][j] = k;}else if(map[i][j] == tmp && path[i][j] > k) {path[i][j] = k;}}}}return path;}private final static void printFlody(int[][] path, int s, int e) {System.out.println(String.format("From %d to %d :", s, e));if(s == e) {System.out.println(String.format("Path: %d", s));return;}System.out.print(String.format("Path: %d-->", s));ArrayList<Integer> list = new ArrayList<>();middle(list, path, s, e);for(Integer u : list) {System.out.print(String.format("%d-->", u));}System.out.println(e);}private final static void middle(ArrayList<Integer> list, int[][] path, int i, int j) {int k = path[i][j];if(k == -1)return;middle(list, path, i, k);list.add(k);middle(list, path, k, j);}public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n;int[][] map;int[] city;int s, e;while(true) {n = sc.nextInt();if(n == 0) {break;}map = new int[n+1][n+1];for(int i=1;i<=n;i++) {for(int j=1;j<=n;j++) {map[i][j] = sc.nextInt();if(map[i][j] == -1)map[i][j] = INF;}}city = new int[n+1];for(int i=1;i<=n;i++) {city[i] = sc.nextInt();}int[][] flody = flody(map, city, n);while(true) {s = sc.nextInt();e = sc.nextInt();if(s == -1 && e == -1) {break;}printFlody(flody, s, e);System.out.println(String.format("Total cost : %d", map[s][e]));System.out.println();}}sc.close();} }AC的代碼
于是最后AC的代碼就改了一下,人家的思路是這樣的!!!沒太看的明白,不過語義上的理解就是:
總結(jié)
以上是生活随笔為你收集整理的HDU 1385 Minimum Transport Cost的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 互联网日报 | 苹果首款自研芯片M1亮相
- 下一篇: 内向的人可以做产品经理吗?