算法动态规划之图的最短路径(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++源码)的主要内容,如果未能解决你的问题,请参考以下文章