动态规划——多段图的最短路径

2024-03-30 03:18
文章标签 动态 规划 路径 多段

本文主要是介绍动态规划——多段图的最短路径,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题描述

在这里插入图片描述
在这里插入图片描述

源码

#include<stdio.h>
#include<stdlib.h>
const int INF = 1000;
const int N = 100;//图的最大结点数为100
int arc[N][N];//图的代价矩阵
int cost[N];//存储路径长度
int path[N];//路径
int ClosetPath(int n) {int i,j,temp;for(i=1; i<n; i++) {cost[i]=INF;path[i]=-1;}cost[0]=0;path[0]=-1;//起点for(j=1; j<n; j++) {for(i=j-1; i>=0; i--) {if(arc[i][j]+cost[i]<cost[j]) {cost[j]=arc[i][j]+cost[i];path[j]=i;}}}return cost[n-1];
}
void printPath(int i) {if(i!=-1) {printPath(path[i]);printf("%d-",i);}
}
int main() {int i,j,n,m;//printf("请输入结点个数和边个数:");//scanf("%d%d",&n,&m);n=10;m=18;for(i=0; i<n; i++)for(j=0; j<n; j++)arc[i][j]=INF;
// for(i=0;i<m;i++){
//  int a,b,c;
//  printf("请输入边的两个顶点计权重:");
//  scanf("%d%d%d",&a,&b,&c);
//  arc[a][b]=c;
// }arc[0][1]=4;arc[0][2]=2;arc[0][3]=3;arc[1][4]=9;arc[1][5]=8;arc[2][4]=6;arc[2][5]=7;arc[2][6]=8;arc[3][5]=4;arc[3][6]=7;arc[4][7]=5;arc[4][8]=6;arc[5][7]=8;arc[5][8]=6;arc[6][7]=6;arc[6][8]=5;arc[7][9]=7;arc[8][9]=3;int min = ClosetPath(n);for(i=0;i<n;i++)printf("%3d",path[i]);printf("\n最短路径为:");printPath(path[n-1]);printf("%d",n-1);printf("\n最短距离:%d",min);return 0;
}

这篇关于动态规划——多段图的最短路径的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/860346

相关文章

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

SpringBoot路径映射配置的实现步骤

《SpringBoot路径映射配置的实现步骤》本文介绍了如何在SpringBoot项目中配置路径映射,使得除static目录外的资源可被访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一... 目录SpringBoot路径映射补:springboot 配置虚拟路径映射 @RequestMapp

浅谈MySQL的容量规划

《浅谈MySQL的容量规划》进行MySQL的容量规划是确保数据库能够在当前和未来的负载下顺利运行的重要步骤,容量规划包括评估当前资源使用情况、预测未来增长、调整配置和硬件资源等,感兴趣的可以了解一下... 目录一、评估当前资源使用情况1.1 磁盘空间使用1.2 内存使用1.3 CPU使用1.4 网络带宽二、

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

go动态限制并发数量的实现示例

《go动态限制并发数量的实现示例》本文主要介绍了Go并发控制方法,通过带缓冲通道和第三方库实现并发数量限制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录带有缓冲大小的通道使用第三方库其他控制并发的方法因为go从语言层面支持并发,所以面试百分百会问到

Spring Boot中的路径变量示例详解

《SpringBoot中的路径变量示例详解》SpringBoot中PathVariable通过@PathVariable注解实现URL参数与方法参数绑定,支持多参数接收、类型转换、可选参数、默认值及... 目录一. 基本用法与参数映射1.路径定义2.参数绑定&nhttp://www.chinasem.cnbs

一文详解SpringBoot中控制器的动态注册与卸载

《一文详解SpringBoot中控制器的动态注册与卸载》在项目开发中,通过动态注册和卸载控制器功能,可以根据业务场景和项目需要实现功能的动态增加、删除,提高系统的灵活性和可扩展性,下面我们就来看看Sp... 目录项目结构1. 创建 Spring Boot 启动类2. 创建一个测试控制器3. 创建动态控制器注

springboot如何通过http动态操作xxl-job任务

《springboot如何通过http动态操作xxl-job任务》:本文主要介绍springboot如何通过http动态操作xxl-job任务的问题,具有很好的参考价值,希望对大家有所帮助,如有错... 目录springboot通过http动态操作xxl-job任务一、maven依赖二、配置文件三、xxl-

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关