• 看 迪杰斯特拉(Dijsktra)算法体会


    迪杰斯特拉 看啊哈算法中迪杰斯特拉算法体会;

        算法思路 ;

    1.先找到源头到其他点的最短路;

    2.以最短路作为中转点进行比较,用一个dis数组保存源头到他的最优距离

    3.用循环进行最优筛选;


    #include<stdio.h>
    int e[1005][1005],dis[1005],book[1005],i,j,n,m,t1,t2,t3,u,v,min;
    int main()
    {
        int inf=9999999;
        while(scanf("%d%d",&n,&m)!=EOF)
        {
            if(m==n&&n==0) return 0;
            for(i=1; i<=n; i++)
            {
                for(j=1; j<=n; j++)
                {
                    if(i==j) e[i][j]=0;
                    else e[i][j]=inf;
    
                }
            }
            for(i=1; i<=m; i++)
            {
                scanf("%d%d%d",&t1,&t2,&t3);
                e[t1][t2]=e[t2][t1]=t3;
            }
            for(i=1; i<=n; i++)
            {
                dis[i]=e[1][i];
            }
            for(i=0; i<=n; i++)
            {
                book[i]=0;
            }
            book[1]=1;
    
            for(i=1; i<n; i++)
            {
                min=inf;
                for(j=1; j<=n; j++)
                {
                    if(book[j]==0&&dis[j]<min)
                    {
                        min=dis[j];
                        u=j;
    
                    }
                }
                book[u]=1;
                for(v=1; v<=n; v++)
                {
                    if(e[u][v]<inf)
                        if(dis[v]>dis[u]+e[u][v])
                            dis[v]=dis[u]+e[u][v];
                }
    
            }
            // for(i=1; i<=n; i++)
            printf("%d
    ",dis[n]);
        }
        return 0;
    }
    


  • 相关阅读:
    DB2去重的几种方法
    split命令:文件切割
    DB2中横表纵表互换
    做一个思想的码农
    access应用分享
    回顾2015年
    笑看互联网金融
    Razor语法
    数据库操作(二)
    SQL Server数据库简介(一)
  • 原文地址:https://www.cnblogs.com/coded-ream/p/7208024.html
Copyright © 2020-2023  润新知