| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 598 人关注过本帖
标题:【迪杰斯特拉算法】【求助】
只看楼主 加入收藏
子洋虾米
Rank: 1
来 自:哈尔滨市第九中学
等 级:新手上路
帖 子:79
专家分:0
注 册:2008-9-15
收藏
 问题点数:0 回复次数:1 
【迪杰斯特拉算法】【求助】
#include <stdio.h>
#include <conio.h>
#define n 5

int dim1[12];
/*int c[6][6]={{0,0,10,32767,30,100},{0,32767,0,50,32767,32767},{0,32767,32767,0,32767,10},{0,32767,32767,20,0,60},{0,32767,32767,32767,32767,0}};*/
int c[6][6]={{0,0,7,2,8,32767},{0,7,0,3,32767,4},{0,2,3,0,4,8},{0,8,32767,4,0,32767},{0,32767,4,8,32767,0}};
int prev[6];
int s[n];
int dist[n];
int i,v,j;

int Dijkstra(int v)
{
int u,temp,newdist;
for(i=1;i<=n;i++)
   {dist[i]=c[v][i];
    s[i]=0;
    prev[i]=v;
   }
   dist[v]=0;
   s[v+1]=1;
   for(i=1;i<=n;i++)
   printf("%d ",dist[i]);
    printf("\n ");
   getch();
for(i=1;i<=n;i++)
   {temp=32767;
    u=v;
    for(j=1;j<=n;j++)
       {if((s[j]==0)&&(dist[j]<temp))
          {u=j;
           temp=dist[j];
          }         
       }
     
    s[u]=1;
     printf("%d :",u);
   
    for(j=1;j<=n;j++)
      {if((s[j]==0)&&(c[u][j]<32767))
         {
          if(dist[u]+c[u][j]<dist[j])
            {dist[j]=dist[u]+c[u][j];
             prev[j]=u;                          
            }
         }
      }
     for(i=1;i<=n;i++)
   printf("%d ",dist[i]);
   printf("\n ");getch();
   }
}
int main()
{
    v=0;
    Dijkstra(v);
    for(i=1;i<=n;i++)
    printf("%d ",dist[i]);
    printf("i=");
    /*while(i!=v)
         {printf("%d <---",i=prev[i]);               
      }*/   
getch();}
搜索更多相关主题的帖子: 迪杰斯特拉 算法 
2008-10-03 12:10
子洋虾米
Rank: 1
来 自:哈尔滨市第九中学
等 级:新手上路
帖 子:79
专家分:0
注 册:2008-9-15
收藏
得分:0 
这个程序无法计算出最短路径。。怀疑是下标混乱
麻烦高手修改一二或者给一个清晰一些的算法。。谢谢。。感激不尽 啊
2008-10-03 12:11
快速回复:【迪杰斯特拉算法】【求助】
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030918 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved