酷代码 AI
菜单
服务商

编程实现 小青要赶 N(2≤N≤100)匹小马过河,N 匹小马过河都需要一定的时间(分钟),小青每次过河最多能赶两匹小马(骑一匹并赶一匹),返回时需骑一匹,每次过河的时间为走的慢的小马花费的时间。请计算至少需要多长时间才能把 N 匹小马全部赶过河。 例如:N = 4,4 匹小马过河需要的时间分别为 1,2,3,4(单位:分钟)。 用时最少的一种过河方式: 第一次:赶 1 分钟和 2 分钟的小马过河,然后骑 1 分钟的小马返回,共花费 3 分钟(过去花费 2 分钟,回来花费 1 分钟); 第二次:赶 3 分钟和 4 分钟的小马过河,然后骑 2 分钟的小马返回,共花费 6 分钟(过去花费 4 分钟,回来花费 2 分钟); 第三次:赶 1 分钟和 2 分钟的小马过河,共花费 2 分钟(过去花费 2 分钟); 赶这 4 匹小马过河一共花费 11 分钟(11=3+6+2)。 输入描述 第一行输入一个正整数 N(2≤N≤100),表示需要过河的小马数量 第二行输入 N 个正整数(1≤正整数≤100),表示每匹小马过河需要花费的时间(分钟),正整数之间以一 个空格隔开 输出描述 输

```python # 读取输入 n = int(input()) times = list(map(int, input().split())) # 对小马过河时间进行排序 times.sort() total_time = 0 while len(times) > 3: # 方案一:最快和次快送最慢和次慢 plan1 = times[1] + times[0] + times[-1] + times[1] # 方案二:最快分别送最慢和次慢 plan2 = times[-1] + times[0] + times[-2] + times[0] # 选择用时少的方案 total_time += min(plan1, plan2) # 去掉已经过河的最慢和次慢的小马 times = times[:-2] if len(times) == 3: total_time += times[0] + times[1] + times[2] elif len(times) == 2: total_time += times[1] else: total_time += times[0] print(total_time) ``` [2026-02-07 20:30:57 | AI问答 | 243点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多