zoukankan      html  css  js  c++  java
  • 动态规划求有向无环图的单源最短路径

    问题描述如下:



     

    具体代码实现:

     1 #include<stdlib.h>
     2 #include<stdio.h>
     3 #define x 9999
     4 #define max 9999
     5 int data[10][10];
     6 int dist[10];//记录最短路径为多少
     7 int path[10];//记录最短路径
     8 int kmin(int,int);
     9 void fpath(int a[][10]);
    10 int froute(int a[][10]);
    11 void main()
    12 {
    13     int i,m;
    14     int a[10][10]={
    15     {x,4,2,3,x,x,x,x,x,x},
    16     {x,x,x,x,10,9,x,x,x,x},
    17     {x,x,x,x,6,7,10,x,x,x},
    18     {x,x,x,x,x,3,8,x,x,x},
    19     {x,x,x,x,x,x,x,4,8,x},
    20     {x,x,x,x,x,x,x,9,6,x},
    21     {x,x,x,x,x,x,x,5,4,x},
    22     {x,x,x,x,x,x,x,x,x,8},
    23     {x,x,x,x,x,x,x,x,x,4},
    24     {x,x,x,x,x,x,x,x,x,x}};
    25 
    26     /*for (i=0;i<10;i++)
    27     {
    28         for(j=0;j<10;j++)
    29         printf("%d  ",a[i][j]);
    30         printf("\n");
    31     }*/
    32     fpath(a);
    33         printf("最短路径大小为:  %d\n",dist[9]);
    34 
    35     m=froute(a);
    36     for(i=m-1;i>=0;i--)
    37         printf("最短路径经过:   %d\n",path[i]);
    38 }
    39 void fpath(int a[][10])
    40 {
    41     int i,j,k;
    42     dist[0]=0;
    43     for(i=1;i<10;i++)
    44     {
    45         k=max;
    46         for(j=0;j<i;j++)
    47         {
    48             if(a[j][i]!=x)
    49                 if((dist[j]+a[j][i])<k)
    50                     k=dist[j]+a[j][i];    
    51         }
    52         dist[i]=k;
    53     }
    54 }
    55 int froute(int a[][10])
    56 {
    57     int j,b,k=1,i=9;
    58     path[0]=10;
    59     while(i>0)
    60     {
    61         for(j=i-1;j>=0;j--)
    62         {
    63             if(a[j][i]!=x)
    64             {
    65                 b=dist[i]-a[j][i];
    66                 if(b==dist[j])
    67                 {
    68                     path[k++]=j+1;
    69                     i=j;
    70                     break;
    71                 }
    72             }
    73 
    74         }
    75     }
    76         return k;
    77 }
    78 
    79 
    80             
  • 相关阅读:
    CentOS 6.4 系统下的MySQL的主从库配置
    扫盲: JAVA基本常识
    ant学习
    Linux一些命令
    redis学习
    扫盲:注册表和绿色软件常识
    Java.前端.Layer.open.btn验证无效
    Java.数据结构.集合体系详解
    PageHelper踩坑
    Scrum.站立会议介绍
  • 原文地址:https://www.cnblogs.com/lpshou/p/2453370.html
Copyright © 2011-2022 走看看