算法实现单元点最短路径问题

源代码在线查看: suanfa.txt

软件大小: 2 K
上传用户: ldh_ncu10
关键词: 算法 最短路径
下载地址: 免注册下载 普通下载 VIP

相关代码

				#include
				int num;
				int s[8],dist[8];
				int d[8][8];
				int cost[8][8]={{0,0,0,0,0,0,0,0},
				{0,0,20,50,30,1000,1000,1000},
				{0,1000,0,25,1000,1000,70,1000},
				{0,1000,1000,0,40,25,50,1000},
				{0,1000,1000,1000,0,55,1000,1000},
				{0,1000,1000,1000,1000,0,10,70},
				{0,1000,1000,1000,1000,1000,0,50},
				{0,1000,1000,1000,1000,1000,1000,0}};
				void init(){
				     
				     int i=0,j=0;
				     for(i=1;i				     for(j=1;j				   d[i][j]=1;                   
				      }    
				     s[i]=0;                                        /*表示第i个接点没有找到最短路径*/
				     dist[i]=cost[1][i];
				 }
				} 
				void find(){
				     int k=0;
				     int i=0;
				     int j=0;
				     int m=0;
				  s[1]=1;
				  dist[1]=0;
				  for(k=2;k				  for(num=2000,i=2;i				   if(s[i]==0)                          /*在还没有找到最短路径的接点中找距离最近的接点*/
				    if(dist[i]				     num=dist[i];
				     j=i;                         /*用J记录距离最近的接点*/ 
				    }
				  }
				  s[j]=1;                                   
				  for(m=2;m				   if(d[j][m]==1){
				    d[j][m]=j;
				       break;
				   }
				  }
				  for(i=2;i				   if(s[i]==0){
				    if(dist[i]>dist[j]+cost[j][i]){     /*每找到一个新接点如果其他最短路径要修改,则改变他们的路径长,以及其路径*/
				     dist[i]=dist[j]+cost[j][i];       /*修改到已经找到的集合的最短距离*/
				     for(m=2;m				d[i][m]=d[j][m];            /*路径改为刚找到的接点的路径*/
				    }
				   }
				  }
				 }
				 }  
				          
				          
				void print(){
				        int i=0;
				        int j=0;
				      for(i=1;i				  printf("%d:  %d",i,dist[i]);
				  for(j=1;j				   printf("  %d",d[i][j]);
				   if(d[i][j+1]==d[i][j+2])
				    break;
				  }
				  printf("\n");
				 }
				 }            
				 
				int main()
				{
				 int a;
				 init();
				    find();
				    print();
				    a=getchar();
				while(a!=EOF)
				    a=getchar();
				 return 1;
				}
				
				
							

相关资源