算法动态规划之图的最短路径(C++源码)

Posted 敲代码两年半的练习生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法动态规划之图的最短路径(C++源码)相关的知识,希望对你有一定的参考价值。

【算法】动态规划之图的最短路径(C++源码)

一、任务描述

请采用动态规划算法编程以求解如下图的最短路径问题:

二、步骤描述

1、标明编号
2、创建数组a存储分条路径的长度,f为每条路径分别的长度,c存储最短的路径位置,最后比较f的大小,输出min和各c的值。

三、运行结果截图

四、源代码(C++)

#include <iostream>

using namespace std;

#define INF 0x3f3f3f3f

int main()

    int n,a[105][105],c[105]=0;
    cin>>n;
    for(int i=1;i<=n;i++)
    
       for(int j=1;j<=n;j++)
       
           cin>>a[i][j];
       
    
    int f[105]=INF;
    f[n]=0;
    for(int i=n-1;i>=1;i--)
    
        int mins=INF,k=0;
        for(int j=1;j<=n;j++)
        
            if(a[i][j]!=0&&a[i][j]!=INF)
            
                f[i]=f[j]+a[i][j];
                if(f[i]<mins)
                
                    k=j;
                
                c[i]=k;
                mins=min(f[i],mins);
            
        
        f[i]=mins;
    
    cout<<"The shortest path is : "<<f[1]<<endl;
    int x=c[1];
    while(x)
    
        cout<<" "<<x<<" ";
        x=c[x];
    
    cout<<endl;
    return 0;


以上是关于算法动态规划之图的最短路径(C++源码)的主要内容,如果未能解决你的问题,请参考以下文章

非线性数据结构--图的最短路径问题与动态规划问题的区别

数据结构之图:求所有节点之间的最短路径,用啥算法时间复杂度小?求答案与解释

求图的最短路径 c语言

动态规划作业-多段图的最短路径问题

数据结构与算法基础之图的应用-最短路径

图的最短路径和拓扑排序