最短路问题(动态规划解法)

这篇博客讲解了如何使用动态规划算法解决城市间交通问题,通过输入城市间的距离矩阵,找到从起点A到终点E的最短路径及其费用。展示了两种代码实现方式:正推和逆推,适用于寻找最优化路线的编程挑战。

题目描述

下图表示城市之间的交通路网,线段上的数字表示费用,单向通行由A->E。试用动态规划的最优化原理求出A->E的最省费用
 

输入

输入整数n表示有n个城市
然后是n行n列数据,第i行n个数据表示城市i到各个城市之间的距离,如果没有路径到达该城市,则数据为0

输出

输出最短路径值及经过的城市,格式见样例

样例输入 Copy

10
0  2  5  1  0  0  0  0  0  0
0  0  0  0 12 14  0  0  0  0
0  0  0  0  6 10  4  0  0  0
0  0  0  0 13 12 11  0  0  0
0  0  0  0  0  0  0  3  9  0
0  0  0  0  0  0  0  6  5  0
0  0  0  0  0  0  0  0 10  0
0  0  0  0  0  0  0  0  0  5
0  0  0  0  0  0  0  0  0  2
0  0  0  0  0  0  0  0  0  0

样例输出 Copy

minlong=19
1 3 5 8 10

AC代码:

#include<stdio.h>
#include<cstring>
#include<algorithm>
#include<iostream>
#define N 1050
using namespace std;
int n,m,k;
int dist[N];
int a[N][N];
int nex[N];
int dp(int u)//前面的点都遍历过后,可以得出前u各点每个点
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值