#include <iostream.h>
#include <malloc.h>
#include <conio.h>
void main()
{ int num=1;
int nodes,edges,i,j,r,k;
int *D,*cost,*P;/*D是动态数组,COST数组存放代价,P数组是最小成本路径*/
typedef int **Value;
Value value;
cout<<" 开始演示程序"<<endl;
cout<<"请输入结点数目:";cout<<endl<<"nodes=";/*输入图的结点数*/
cin>>nodes;
cout<<"请输入边的数目:";cout<<endl<<"edges=";/*输入图的边数*/
cin>>edges;
D=(int*)malloc(nodes*sizeof(int));
cost=(int*)malloc(nodes*sizeof(int));
P=(int*)malloc(nodes*sizeof(int));
value=(Value)malloc(nodes*sizeof(int*));
for(i=0;i<nodes;i++)
{
value[i]=(int*)malloc(nodes*sizeof(int));
}
for(i=0;i<nodes;i++)
for(j=0;j<nodes;j++)
value[i][j]=-1;
for(i=1;i<=edges;i++,num++)
{
cout<<"edge"<<num<<":"<<"from";/*输入图的路径*/
cin>>j;
cout<<"to:";
cin>>k;
cout<<"value=";
cin>>value[j][k];
}
cost[nodes]=0;
for(j=nodes-1;j>=1;j--)
{
for(r=j+1;value[j][r]<0&&r<=nodes;r++);
D[j]=r;
k=value[j][r]+cost[r];
for(;r<=nodes;r++)
if(value[j][r]>0)
if(value[j][r]+cost[r]<k)
{
k=cost[j]=value[j][r]+cost[r];
D[j]=r;
}
}
P[1]=1;
for(j=2;P[j-1]<nodes;j++)
{
k=P[j-1];
P[j]=D[k];
}
cout<<endl<<"最小成本路径:"<<endl;/*输出最小成本路径*/
for(i=1;i<=j-1;i++)
cout<<P[i]<<"->";
char ch=getch();
}
ddt.rar_ddt_动态规划多段图问题c语言_动态规划递推_多源点路径_实际路径规划
版权申诉
5星 · 超过95%的资源 93 浏览量
2022-09-22
16:26:17
上传
评论 1
收藏 1021B RAR 举报
御道御小黑
- 粉丝: 58
- 资源: 1万+
最新资源
- foldcraftlauncher_262944.apk
- 珍藏多年的基于matlab实现潮流计算程序源代码集合,包含多个潮流计算程序.rar
- 使用FPGA实现串-并型乘法器
- 基于matlab实现针对基于双曲线定位的DV-Hop算法中误差误差出一种基于加权双曲线定位的DV-Hop改进算法.rar
- 基于matlab实现由遗传算法开发的整数规划,车辆调度问题.rar
- 电视家7.0(对电视配置要求高).apk
- 免费计算机毕业设计-基于JavaEE的医院病历管理系统设计与实现(包含论文+源码)
- 手机端 我的世界融合植物大战僵尸版.apk
- 植物大战僵尸 · 戴夫的老年生活 手机版.apk
- Runcraft · 我的世界跑酷游戏 手机端.apk
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论12