实习笔试准备(2)

news/2024/10/17 14:28:05/

1 第二题

1.1 题目描述

旅行者穿越沙漠的过程中需要不断地消耗携带的饮用水,到达终点前会经过几个绿洲,每个绿洲均设有水分补给站可以为旅行者提供水分补给并收取一定的费用。

沿途共有n个补给站,每个补给站收取的费用都一样,但是提供的水量不尽相同。起点到终点的距离为D公里,postion[i]表示 第i个补给站距离起点的距离,单位为公里,supply[]表示 第i个补给站可以提供的水量,单位为升。

假设旅行者在起点时携带了W升的水,每行走1公里需要消耗1升的水量,身上可携带的水量没有上限,且携带的水量多少不会对体能消耗产生影响,鉴于每次进补给站花费的钱都是一样多,期望用最少的补给次数到达终点,请帮忙计算最少的补给次数。

1.2 输入描述

第一行输入整数D和W, D表示起点到终点的距离,W表示初始携带的水 第二行输入数组postion,长度为N,分别表示N个补给站分别距离起点的距离 第三行输入数组supply,长度为N,分别表示N个补给站分别可以供给的水量 数据范围: 1 <=D, W<= 10^8,0<= N <=1000,0 < position[i],supply[i] < D

1.3 输出描述

输出一个整数表示最少的补给次数,若无法到达终点则返回-1

1.4 测试用例

1.4.1 input

10 4
1 4 7
6 3 5

1.4.2 output

1

1.5 代码示例 

def min_refills(D, W, positions, supplies):n = len(positions)stations = sorted(zip(positions, supplies))  # 按照位置排序补给站current_pos = 0  # 当前位置current_water = W  # 当前携带的水量refills = 0  # 补给次数for station_pos, station_water in stations:  # 遍历补给站distance = station_pos - current_pos  # 当前位置到补给站的距离if current_water < distance:  # 携带的水量不足以到达补给站return -1current_water -= distance  # 消耗水量到达补给站current_pos = station_pos  # 更新当前位置为补给站位置current_water += station_water  # 补给水量refills += 1if current_pos + current_water >= D:  # 最后一次补给后能够到达终点return refillsif current_pos + current_water >= D:  # 最后一次补给后能够到达终点return refillselse:  # 无法到达终点return -1if __name__ == "__main__":# 读取输入D, W = map(int, input("请输入起点到终点的距离(D)和初始携带的水量(W),以空格分隔:").split())positions = list(map(int, input("请输入补给站距离起点的距离,以空格分隔:").split()))supplies = list(map(int, input("请输入补给站可以供给的水量,以空格分隔:").split()))# 调用函数计算最少补给次数result = min_refills(D, W, positions, supplies)# 输出结果print("最少的补给次数:", result)

1.5.1 input

请输入起点到终点的距离(D)和初始携带的水量(W),以空格分隔:10 4
请输入补给站距离起点的距离,以空格分隔:1 4 7
请输入补给站可以供给的水量,以空格分隔:6 3 5

1.5.2 output

最少的补给次数: 1

2 代码解释

2.1 map()

map(int, ...)map() 函数将一个函数(在这里是 int应用到一个可迭代对象(在这里是被拆分后的字符串部分)。这里的目的是将拆分后的字符串部分转换为整数类型。

2.2 positions = list(map(int, input("请输入补给站距离起点的距离,以空格分隔:").split()))

这行代码的作用是从用户输入中获取补给站距离起点的距离,并将这些距离存储在一个列表中。让我们逐步解释这行代码的不同部分:

①input("请输入补给站距离起点的距离,以空格分隔:"):这部分代码显示一个提示消息,并等待用户输入。用户输入的内容将作为字符串返回

②split():这是字符串的一个方法,用于按照空格将字符串拆分为多个部分。在这个例子中,输入的字符串将被拆分成多个部分,每个部分代表一个距离值。

③map(int, ...)map() 函数将一个函数(在这里是 int)应用到一个可迭代对象(在这里是被拆分后的字符串部分)。这里的目的是将拆分后的字符串部分转换为整数类型。

④list(...):这是将可迭代对象转换为列表的内置函数。在这里,我们使用它来map() 函数的结果转换为包含整数值的列表。

⑤positions = ...:这是将列表赋值给变量 positions 的语句。这样,列表中的距离值就被存储在了名为 positions 的变量中。

综上所述,这行代码的目的是接收用户的输入,将输入的字符串拆分为多个距离值,并将这些距离值存储在名为 positions 的列表中。

2.3 stations = sorted(zip(positions, supplies))

这行代码的作用是将补给站的位置和水量打包成元组,并按照位置进行排序。让我们逐步解释这行代码的不同部分:

①zip(positions, supplies):这是一个内置函数 zip(),它将多个可迭代对象(在这里是 positionssupplies)的元素逐个打包成元组。每个元组由对应位置的元素组成。

②sorted(...):这是一个内置函数 sorted(),它对可迭代对象进行排序。在这里,我们对打包后的元组列表进行排序。

③stations = ...:这是将排序后的列表赋值给变量 stations 的语句。这样,排序后的补给站元组列表就被存储在了名为 stations 的变量中。

综上所述,这行代码的目的是将补给站的位置和水量打包成元组,并按照位置进行排序。排序后的结果存储在名为 stations 的变量中,供后续使用。


http://www.ppmy.cn/news/239647.html

相关文章

vue中vuex状态管理

一、安装 cnpm i vuex --save-dev二、引入&#xff08;main.js&#xff09; import store from ./storenew Vue({el: #app,store,//注册components: { App },template: <App/> })三、vuex配置 src > store > index.js&#xff08;src下创建store目录&#xff0c;…

私有化部署低代码开发工具:jvs-rules 规则引擎决策流参数说明

JVS规则引擎决策调用 通过决策流水号查询入参变量 [请求参数]决策流 ​ GET/mgr/risk//test/parameter/flow/{no} 请求数据类型 application/x-www-form-urlencoded 响应数据类型 [ "*/*" ] 请求参数 参数名称 参数说明 请求类型 是否必须 数据类型 sch…

DIY电脑配置选择的常见误区有哪些?

1.cpu能尽量买新不买旧、能买带k的可超频的就不要选便宜一两百的带F的或者低主频的&#xff1b;理由如下&#xff1a;cpu制作其实是按照最高级诸如i9去制作的&#xff0c;成品出来之后&#xff0c;经过检测完整的体质好的i9 k系列。核心有瑕疵的屏蔽掉改成i7系列、只能用六核的…

【装机知识】机箱知识整理

虽然机箱&#xff08;鞋盒&#xff09;不会影响电脑的性能&#xff0c;但还是有一些门道的。 主要参数 尺寸 选机箱的第一要素就是尺寸了&#xff0c;要保证机箱能装下所有需要的硬件。 按照大小分&#xff0c;机箱有大机箱&#xff08;全塔&#xff09;、中机箱&#xff08;中…

千云物流 -redis集群安装使用

redis使用的场景 需要满足120万司机用户的缓存, 满足车辆当前位置和车辆服务key存储司机手机号码对应的存储以及存储司机key的信息保证redis能更好的提供服务,避免单点故障对应会话消息的缓存保存。以及临时会话缓存的key。基于im的构建。综合所得:需要的key会上亿。需要稳…

“AI Earth”人工智能创新挑战赛:助力精准气象和海洋预测Baseline[2]:数据探索性分析(温度风场可视化)、CNN+LSTM模型建模

【机器学习入门与实践】入门必看系列,含数据挖掘项目实战:模型融合、特征优化、特征降维、探索性分析等,实战带你掌握机器学习数据挖掘 专栏详细介绍:【机器学习入门与实践】合集入门必看系列,含数据挖掘项目实战:数据融合、特征优化、特征降维、探索性分析等,实战带你掌…

大疆 三维建模 正射影像 价格

2.65万的精灵 4 RTK 0.7万块的笔记本(16G内存及计算能力在3.0及以上的 NVidia显卡>4G显存) 2.8万的大疆智图软件(有效期为永久) 总共6.14万

WIFI视频传输方案

最近在看一款冠旭科技的WIFI视频实时传输方案&#xff0c;也就是现在会经常提到的航拍(fpv)&#xff0c;再次之前&#xff0c;我看过一些国外的方案&#xff0c;价格过不说&#xff0c;传输的图像还会有10ms到20ms的传输卡屏&#xff0c;而冠旭科技的方案反倒是更加顺畅&#x…