游艇出租问题(动态规划)

2023-12-13 08:50

本文主要是介绍游艇出租问题(动态规划),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

长江游艇俱乐部在长江上设置了n个游艇出租站1,2,3…,n。游客可以在这些游艇出租站用游艇,并在下游的任何一个游艇出租站归还游艇。游艇出租站i到游艇出租站j之间的租金为r(i,j),1<=i<j=n。试设计一个算法,计算从游艇出租站1到出租站n所需的最少租金。

输入描述:第一行表示有n个站点,接下来n-1行是r( i ,  j)。

输出描述:输出从游艇出租站1到出租站3所需的最少租金

样例输入:

3            //站数

5 15     //从第1站到其他相应各站的租金

7           //从第2站到其他相应各站的租金

样例输出:

12

 算法设计:
使用动态规划的思想,通过逐步计算每个出租站的最小租金,并利用已知的最小租金来计算后续出租站的最小租金。设dp[n]为出租站1到达出租站n-1所需最小租金,rent[i][j]为出租站i到出租站j的租金。先考虑边界条件:dp[0]=0,即从出租站1到达自身的租金为0;易知,当前出租站i所需最小租金应该等于前i个出租站中第x个出租站的dp[x]值+rent[x][i](此时耗费的租金最少),所以遍历搜索前i个出租站dp值,得出最小耗费出租站x,即可得出dp[i],dp[n]则为从游艇出租站1到出租站n所需的最少租金。状态转移方程如下:


dp[i]=dp[x]+rent[x][i]

 代码实现:

#include <iostream>
using namespace std;
const int N=100;
int rent[N][N];
int MinRent(int n){int dp[n];// dp[n]表示从出租站1到达出租站n-1所需最小租金for (int i = 0; i < n; ++i) {   //用于存储最小租金,先定义为极大值dp[i]=INT_MAX;}dp[0]=0;// 从出租站1到达自身的租金为0for (int i = 1; i < n; ++i) {          //遍历所有出租站,得出dp[i]for (int x = 0; x < i; ++x) {if(dp[x]!=INT_MAX&&dp[x]+rent[x][i]<dp[i])dp[i]=dp[x]+rent[x][i];                    //动态转移方程}}return dp[n-1];
}
int main(){int n;cout << "请输入游艇出租站数n: ";cin >> n;cout << "请输入每站到达其他各站的租金\n";for (int i = 0; i < n - 1; i++) {for (int j = i + 1; j < n; j++) {cin >> rent[i][j];}}int min= MinRent(n);cout << "从第一站到第" << n << "站所需花费最小租金为: " << min << endl;
}

运行结果:

这篇关于游艇出租问题(动态规划)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/weixin_62654522/article/details/131352739
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/487844

相关文章

电脑蓝牙连不上怎么办? 5 招教你轻松修复Mac蓝牙连接问题的技巧

《电脑蓝牙连不上怎么办?5招教你轻松修复Mac蓝牙连接问题的技巧》蓝牙连接问题是一些Mac用户经常遇到的常见问题之一,在本文章中,我们将提供一些有用的提示和技巧,帮助您解决可能出现的蓝牙连接问... 蓝牙作为一种流行的无线技术,已经成为我们连接各种设备的重要工具。在 MAC 上,你可以根据自己的需求,轻松地

Java 中的跨域问题解决方法

《Java中的跨域问题解决方法》跨域问题本质上是浏览器的一种安全机制,与Java本身无关,但Java后端开发者需要理解其来源以便正确解决,下面给大家介绍Java中的跨域问题解决方法,感兴趣的朋友一起... 目录1、Java 中跨域问题的来源1.1. 浏览器同源策略(Same-Origin Policy)1.

如何清理MySQL中的binlog问题

《如何清理MySQL中的binlog问题》:本文主要介绍清理MySQL中的binlog问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目http://www.chinasem.cn录清理mysql中的binlog1.查看binlog过期时间2. 修改binlog过期

如何解决yum无法安装epel-release的问题

《如何解决yum无法安装epel-release的问题》:本文主要介绍如何解决yum无法安装epel-release的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录yum无法安装epel-release尝试了第一种方法第二种方法(我就是用这种方法解决的)总结yum

SpringBoot实现Kafka动态反序列化的完整代码

《SpringBoot实现Kafka动态反序列化的完整代码》在分布式系统中,Kafka作为高吞吐量的消息队列,常常需要处理来自不同主题(Topic)的异构数据,不同的业务场景可能要求对同一消费者组内的... 目录引言一、问题背景1.1 动态反序列化的需求1.2 常见问题二、动态反序列化的核心方案2.1 ht

golang实现动态路由的项目实践

《golang实现动态路由的项目实践》本文主要介绍了golang实现动态路由项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习... 目录一、动态路由1.结构体(数据库的定义)2.预加载preload3.添加关联的方法一、动态路由1

IDEA下"File is read-only"可能原因分析及"找不到或无法加载主类"的问题

《IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题》:本文主要介绍IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题,具有很好的参... 目录1.File is read-only”可能原因2.“找不到或无法加载主类”问题的解决总结1.File

idea中project的显示问题及解决

《idea中project的显示问题及解决》:本文主要介绍idea中project的显示问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录idea中project的显示问题清除配置重China编程新生成配置总结idea中project的显示问题新建空的pr

redis在spring boot中异常退出的问题解决方案

《redis在springboot中异常退出的问题解决方案》:本文主要介绍redis在springboot中异常退出的问题解决方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴... 目录问题:解决 问题根源️ 解决方案1. 异步处理 + 提前ACK(关键步骤)2. 调整Redis消费者组

Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题

《Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题》:本文主要介绍Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录一、前言二、系统架构检测三、卸载旧版 Go四、下载并安装正确版本五、配置环境变量六、验证安装七、常见