码迷,mamicode.com
首页 > 其他好文 > 详细

多段图动态规划dp

时间:2016-03-09 01:28:27      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:

多段图问题是DP的基础题目。大体的意思是有一个赋权有向图,其顶点集被分为几个子集。求经过每个子集从源点到终点的最短路径

 1 import java.util.ArrayList;
 2 import java.util.Arrays;
 3 import java.util.Scanner;
 4 import java.util.Stack;
 5 
 6 public class Main {
 7 private static final int k = 3;
 8 private static int[] P = new int[k];
 9 
10 public static void MultiGraph(int[][] G,int n)
11 {
12     int[] COST = new int[n];
13 
14     Arrays.fill(COST,100);
15     int[] D = new int[n];
16     int temp = 100;
17     COST[0]=0;
18     D[0]=0;
19     for(int j=1;j<n;j++)
20     {
21         for(int r = 0;r<j;r++)
22         {
23 
24             if(G[j][r]!=0)
25             {
26                 if(COST[j]>COST[r] + G[j][r])
27                 {
28                     COST[j]=COST[r]+G[r][j];
29                     temp = r;
30 
31                 }
32             }
33 
34         }
35 
36         D[j] = temp;
37     }
38     P[k-1]=D[n-1];
39     P[0]=0;
40     for(int j = 2;j>1;j--)
41     {
42         P[j-1] = D[P[j]];
43     }
44     for (int te: P
45          ) {
46         System.out.println(te);
47 
48     }
49 }
50 
51     public static void main(String[] args)
52     {
53         //新建一个树
54         int[][] G = {
55                 {0,2,3,4,0,0,0},
56                 {2,0,0,0,6,0,0},
57                 {3,0,0,0,5,0,0},
58                 {4,0,0,0,0,2,0},
59                 {0,6,5,0,0,0,3},
60                 {0,0,0,4,0,0,1},
61                 {0,0,0,0,3,1,0},
62         };
63 
64         MultiGraph(G,7);
65 
66     }
67 
68 }

 

多段图动态规划dp

标签:

原文地址:http://www.cnblogs.com/ren-jie/p/5256479.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!