【算法】游艇租贷

问题

⻓江游艇俱乐部在⻓江上设置了 n 个游艇租聘站,游客可以在这些租聘站租 ⽤游艇,然后在下游的任何⼀个租聘站归还。游艇出租站 i 到 j 的租⾦为 r(i, j),1 ≤i< j≤n,设计⼀个算法,计算从出租站 i 到 j 所需的最少租⾦。

输⼊格式: 第 1 ⾏中有 1 个正整数 n(n<=200),表示有 n 个游艇出租站。 接下来的第 2 到第 n ⾏,第 i ⾏向量包含了第 i-1 站到第 i 站,第 i+1 站, … , 第 n 站的租⾦。

输⼊样例:

在这⾥给出⼀组输⼊。例如:

3 5 15 7

样例说明:表示⼀共有 3 个出租站点,其中:第 1 个站点到第 2 个的租⾦为 5,第 1 个站点到第 3 个的租⾦为 15,第 2 个站点到第 3 个的租⾦为 7

输出格式: 输出从游艇出租站 1 到游艇出租站 n 所需的最少租⾦。

输出样例: 在这⾥给出相应的输出。例如:

12

分析

这道题是一道最短路径的问题,可以使用动态规划算法去实现,我们参考迪杰斯特拉算法的思想,子问题就是起始点0到1、2、3……..n的最短路径,让每个点都作为一次中间点,不断更新起始点到其他点的最短路径,于是就可以得到递推关系式dp[i] = min(dp[i], dp[j]+cost[j][i-j-1]),也就是看看直接到i这个点和先经过j这个点再到i这个点谁的花费比较少,最后dp[n-1]就是我们要求的答案。

下面对代码进行一些解释:

cost[i][j]表示从站点i到站点i+j+1的租用游艇的成本。

dp数组被初始化为每个元素的inf(无穷大),除了第一个元素dp[0]被设置为0。dp数组将用于存储到达每个站点的最小成本。

在内部循环中,代码通过考虑从前一个站点到当前站点的所有可能路径来更新dp[i]的值。它使用公式dp[i] = min(dp[i], dp[j]+cost[j][i-j-1])。这里,dp[j]表示到达站点j的最小成本,而cost[j][i-j-1]表示从站点j到站点i的租用游艇的成本。

循环完成后,从1号站到n号站租用游艇的最小成本将存储在dp[n-1]中。

最后,函数返回dp[n-1]的值。

注意:代码假设cost数组已正确填充了租用游艇的成本。索引i和j用于根据站点编号访问cost数组的正确元素。

代码和运行结果

def min_cost(n, cost):# 初始化 dp 数组dp = [float("inf") for i in range(n)]dp[0] = 0# 动态规划,更新 dp 数组for i in range(1, n):for j in range(i):dp[i] = min(dp[i], dp[j]+cost[j][i-j-1])  # 修改此行# 返回 dp 数组最后一个元素,即从1号站到n号站租用游艇的最少租金return dp[n-1]# 主程序
n = int(input("请输入游艇租赁站数量:"))
cost = []
for i in range(n-1):row = list(map(int, input(f"请输入:").split()))cost.append(row)# 最后一个租赁站到自身的租金为0
cost.append([0])res = min_cost(n, cost)
print(f"游艇出租站 1 到游艇出租{n}站所需的最少租⾦为: {res}")

这道题的思考关键在于联系最短路径算法,让每个点做一次中间点,不断更新初始点到其他点的最短路径。代码关键点在于递推关系式dp[i] = min(dp[i], dp[j]+cost[j][i-j-1])。其中,dp[i]表示从起始点到达站点i的最小成本,dp[j]表示到达站点j的最小成本,而cost[j][i-j-1]表示从站点j到站点i的租用游艇的成本。代码通过考虑从前一个站点到当前站点的所有可能路径,选择其中最小的成本更新dp[i]的值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/22903.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AnythingLLM安装包下载+CUDA安装包下载地址,提升GPU性能【语义熔炉网】

一、安装包下载地址 1. AnythingLLM安装包 &#xff08;支持Windows/macOS/Linux&#xff0c;部分用户反馈需科学上网&#xff09;国内镜像备份&#xff08;含DeepSeek相关工具&#xff09;&#xff1a;www.mix688.com/118.html 2. CUDA安装包 国内镜像&#xff08;若官网访…

【大模型】蓝耘智算平台部署DeepSeek-R1大模型使用详解

目录 一、前言 二、蓝耘智算平台介绍 2.1 蓝耘智算平台是什么 2.2 平台优势 2.3 应用场景 2.4 对DeepSeek 的支持 2.4.1 DeepSeek 简介 2.4.2 DeepSeek 优势 三、蓝耘智算平台部署DeepSeek-R1操作过程 3.1 注册账号 3.1.1 余额检查 3.2 部署DeepSeek-R1 3.2.1 获取…

本地部署deepseek-r1 ollama+anythingllm

本期笔者带给大家部署一个本地私有化知识库&#xff0c;简单明了&#xff0c;直接步入主题&#xff0c;需要读者可以继续关注支持一下啊&#xff01; 目录 背景步骤 一、环境准备二、Ollama环境部署三、AnythingLLM安装 总结 开始下载应用&#xff1a; 操作系统&#xff1a…

VSCode ssh远程连接内网服务器(不能上网的内网环境的Linux服务器)的终极解决方案

VSCode ssh远程连接内网服务器&#xff08;不能上网的内网环境的Linux服务器&#xff09; 离线下载vscode-server并安装: 如果远程端不能联网可以下载包离线安装,下载 vscode-server 的 url 需要和 vscode 客户端版本的 commit-id 对应.通过 vscode 面板的帮助->关于可以获…

计算机视觉算法实战——三维重建(主页有源码)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​ 1. 三维重建领域简介 三维重建&#xff08;3D Reconstruction&#xff09;是计算机视觉的核心任务之一&#xff0c;旨在通过多视角图像、视频…

十、OSG学习笔记-多线程(OpenThreads)

上一节内容&#xff1a; 九、OSG学习笔记-NodeVisitor节点遍历器-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/145742756?spm1001.2014.3001.5501 本章节代码&#xff1a; OsgStudy/Openthreads CuiQingCheng/OsgStudy - 码云 - 开源中国https://gite…

AI颠覆蛋白质工程:ProMEP零样本预测突变效应

概述 在生命科学的“造物革命”中&#xff0c;蛋白质工程一直面临着“试错成本”与“设计效率”的双重挑战——传统方法依赖繁复的多序列比对&#xff08;MSA&#xff09;或耗时的实验室筛选&#xff0c;如同在浩瀚的蛋白质宇宙中盲选星辰。而今日&#xff0c;一项发表于《Cel…

计算机领域里注重实战的9本书

计算机领域注重实战的书籍众多&#xff0c;以下是一些备受推崇的注重实战的计算机书籍&#xff1a; 1、Redis实战 当你需要以接近实时的速度访问快速变动的数据流时&#xff0c;Redis这样的键值数据库就是你的极好选择。通过接纳散列、字符串、列表等多种数据类型&#xff0c;…

《2024工业控制系统网络安全态势白皮书》

一、白皮书发布背景 东北大学“谛听”网络安全团队近日撰写并发布了2024年工业控制网络安全态势白皮书&#xff0c;读者可以通过报告了解2024年工控安全相关政策法规报告及典型工控安全事件分析。 二、白皮书主要内容 报告对工控系统漏洞、联网工控设备、工控蜜罐与威胁情报…

【VSCode】MicroPython环境配置

【VSCode】MicroPython环境配置 RT-Thread MicroPython 插件安装MicroPython 库文件配置结束语 RT-Thread MicroPython 插件安装 在 VSCode 拓展中搜索 “RT-Thread MicroPython” 并安装&#xff0c;详细配置步骤&#xff08;修改 VSCode 默认终端、MicroPython 代码补全&…

如何在VMware虚拟机的window10系统中安装网易mumu模拟器

安卓模拟器是可以在电脑的windows环境中运行手机软件的工具,喜欢网游或者是要逆向安卓应用应该都要安装这个模拟器,如果要模拟器正常工作,主机的虚拟化应该开启,也就是要开启vt。在有些情况下,需要把模拟器安装到电脑的虚拟机里,隔离模拟器与主机,这时vt的开启就稍麻烦些…

Mac本地部署DeepSeek-r1

一、安装DeepSeek 1.1 安装ollama模型管理器 ollama官网下载安装包&#xff1a;https://ollama.com/ 看到mac右上方工具图标出现小羊驼&#xff0c;表示ollama已经安装成功。 2.2 安装DeepSeek 打开终端&#xff0c;输入命令&#xff1a;ollama run deepseek-r1:1.5b&…

单页图床HTML源码+本地API接口图床系统修复版源码

源码介绍 图床系统是一种用于存储和管理图片文件的在线服务。它允许用户上传图片文件&#xff0c;并生成相应的图片链接&#xff0c;从而方便用户在网页、社交媒体或其他平台上分享图片。 PS:源码压缩包分为两个版本&#xff0c;一个是调用360第三方api接口&#xff0c;另外一…

初级渗透测试工程师需要学什么?网络安全零基础入门到精通教程建议收藏!

1、前言 本文主要介绍如何成为一名初级的渗透测试工程师所需要学习的内容&#xff0c;后续也会基于此将自己的学习总结、心得记录下来。相信在不断坚持下&#xff0c;争取在今年五月初成为一名初级的渗透测试工程师。 2、涉及知识领域 基础网络知识&#xff1a; 理解TCP/IP协…

DeepSeek写俄罗斯方块手机小游戏

DeepSeek写俄罗斯方块手机小游戏 提问 根据提的要求&#xff0c;让DeepSeek整理的需求&#xff0c;进行提问&#xff0c;内容如下&#xff1a; 请生成一个包含以下功能的可运行移动端俄罗斯方块H5文件&#xff1a; 核心功能要求 原生JavaScript实现&#xff0c;适配手机屏幕 …

网络安全营运周报

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 第三章网络安全基础 一、网络安全概述 1、网络安全现状及安全挑战 网络安全范畴极其广泛&#xff0c;可以说是涉及多方面。 因为计算机病毒层出不穷以及黑客的…

C#中级教程(1)——解锁 C# 编程的调试与错误处理秘籍

一、认识错误&#xff1a;编程路上的 “绊脚石” 在 C# 编程中&#xff0c;错误大致可分为两类&#xff1a;语法错误和语义错误&#xff08;逻辑错误&#xff09;。语法错误就像是写作文时的错别字和病句&#xff0c;编译器一眼就能识别出来&#xff0c;比如变量名拼写错误、符…

QML Button 部件的使用

按钮也是程序开发中最经常用到的部件&#xff0c;当然其也是比较简单&#xff0c;只需要懂得最基本的操作即可&#xff1b; Button {id: btnwidth: 100height: 50 } 生成一个最基本的按钮 text 属性可以设置按钮文本&#xff1b; flat 属性设置为true时&#xff0c;只有鼠标…

Starlink卫星动力学系统仿真建模第七讲-卫星姿轨控系统(Attitude and Orbit Control System, AOCS)设计规范

以下是一份卫星姿轨控系统&#xff08;Attitude and Orbit Control System, AOCS&#xff09;设计规范的框架和核心内容示例&#xff0c;供参考&#xff1a; 卫星姿轨控系统&#xff08;AOCS&#xff09;设计规范 1. 总则 1.1 目的 本规范旨在规定卫星姿轨控系统的设计要求、…

DINOv2 + yolov8 + opencv 检测卡车的可拉拽雨覆是否完全覆盖

最近是接了一个需求咨询图像处理类的&#xff0c;甲方要在卡车过磅的地方装一个摄像头用检测卡车的车斗雨覆是否完全&#xff0c; 让我大致理了下需求并对技术核心做下预研究 开发一套图像处理软件&#xff0c;能够实时监控经过的卡车并判断其车斗的雨覆状态。 系统需具备以下…