赞
踩
- #include<stdio.h>
- #include<stdlib.h>
- #include<math.h>
- int map[3][3]={
- 0,4,11,
- 6,0,2,
- 3,100000,0/*这里用100000代替无穷大*/
- };
- int path[3][3]={/*path里的数据定义为路径的前置跳转点*/
- -1,0,0,
- 1,-1,1,
- 2,2,-1
- };
- int main(){
- int n=3;
- for(int i=0;i<n;i++){/*i为中转点*/
- for(int j=0;j<n;j++){/*j为起点*/
- for(int k=0;k<n;k++){/*k为终点*/
- if(map[j][i]+map[i][k]<map[j][k]){
- map[j][k]=map[j][i]+map[i][k];
- path[j][k]=i;
- }
- }
- }
- }
- printf("每对顶点的最短路径为:\n");
- for(int i=0;i<n;i++){
- for(int j=0;j<n;j++){
- if(path[i][j]!=-1){
- printf("V%d",j);
- int temp=path[i][j];
- while(temp!=-1){
- printf(" <- V%d",temp);
- temp=path[i][temp];
- }
- printf("\t路径长度为%d\n",map[i][j]);
- }
- }
- }
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。