贪心算法的汽车加油问题(列表索引超出范围)

2024-01-02

我有一个小问题,使用贪心算法解决汽车加油问题。

问题介绍

您将前往距离您的家乡 ???? 英里远的另一个城市。你的车可以行驶 满箱油最多可行驶 ???? 英里,并且您从满箱油开始。沿途,距离您所在城市 stop1、stop2、...、stopN 处有加油站。最少需要补充多少次?

Input:

950
400
4
200 375 550 750

Output:

2

到目前为止我已经尝试过的

def car_fueling(dist,miles,n,gas_stations):
  num_refill, curr_refill, last_refill = 0,0,0
  while curr_refill <= n:
    last_refill = curr_refill
    while (curr_refill <= n-1) & (gas_stations[curr_refill + 1] - gas_stations[last_refill] <= miles):
        curr_refill += 1
    if curr_refill == last_refill:  
      return -1
    if curr_refill <= n:
      num_refill += 1
  return num_refill

我面临的问题是什么

在声明中

while (curr_refill <= n-1) & (gas_stations[curr_refill + 1] - gas_stations[last_refill] <= miles)

我收到错误IndexError: list index out of range。正是因为gas_stations[curr_refill + 1]。所以当我尝试将其分离为while循环和一个if声明如

while (curr_refill <= n-1):
    if (gas_stations[curr_refill + 1] - gas_stations[last_refill] <= miles):
        curr_refill += 1
    else:
        break

它正在进入无限循环。

您能指出我面临的错误吗?


几个问题:

  • &不是布尔与运算符。使用and
  • curr_refill + 1 can be n,从而产生您得到的错误。注意后面的距离last加油站可以使用确定dist
  • 的价值last_refill从一开始就是错误的:您尚未在 0 号站重新加油,因此不应将其初始化为 0。而是使用另一个代表您当前可以行驶多远的变量。

更正后的代码:

def car_fueling(dist,miles,n,gas_stations):
    num_refill, curr_refill, limit = 0,0,miles
    while limit < dist:  # While the destination cannot be reached with current fuel
        if curr_refill >= n or gas_stations[curr_refill] > limit:
            # Cannot reach the destination nor the next gas station
            return -1
        # Find the furthest gas station we can reach
        while curr_refill < n-1 and gas_stations[curr_refill+1] <= limit:
            curr_refill += 1
        num_refill += 1  # Stop to tank
        limit = gas_stations[curr_refill] + miles  # Fill up the tank 
        curr_refill += 1
    return num_refill

# Test cases
print(car_fueling(950, 400, 4, [200, 375, 550, 750]))  # 2
print(car_fueling(10, 3, 4, [1, 2, 5, 9]))  # -1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

贪心算法的汽车加油问题(列表索引超出范围) 的相关文章

随机推荐

  • MongoDB中如何设置自增主键? [复制]

    这个问题在这里已经有答案了 MongoDB中如何设置自增主键 通常 MongoDB 会生成 ObjectID 我想使用我自己的自动增量主键 例如MySQL 示例将不胜感激 我在这里写了一篇博客 http www alexjamesbrown
  • 如何填写空的提交消息?

    直到一分钟前 我有一个 Git 存储库 其中最后一次提交有一条空的提交消息 我通过将新的提交压缩到它上面来填充它git rebase i 无论如何我都打算修改内容 但我仍然想知道是否有正确的方法来填写空的提交消息 I tried git c
  • 将独立对象添加到 RealmList

    是否可以将独立对象添加到已保存在领域中的 RealmObject 的 RealmList 中 好吧 我知道这不起作用 因为我在 object row getIndex RealmList 94 我想做的是 mRealm beginTrans
  • Pandas 在 train_test_split 返回的数据上“不再支持将列表之类传递给 .loc 或带有任何缺失标签的 []”

    由于某种原因 train test split 尽管长度相同且索引看起来相同 但仍会触发此错误 from sklearn model selection import KFold data col1 30 5 45 1 99 6 5 4 2
  • 从 ES5 与 ES6 编写的库导入 TypeScript

    运行时出现奇怪的错误转译的依赖于外部库的 TypeScript 代码 Such as Uncaught TypeError es5 lib 1 default is not a function 怎么了 ES6 模块规范与 CommonJs
  • 使用LD_PRELOAD方法注入printf时出现问题

    我在我的一个项目中破解了 glibc 的 printf 并遇到了一些问题 您能提供一些线索吗 我关心的问题之一是为什么同样的 malloc free 解决方案可以完美地工作 如附件所示 PrintfHank c 包含我自己的 printf
  • PHP同时获取数组值和数组键

    我想在数组中运行 for 循环 并为数组中的每个元素创建锚元素 其中键是文本部分 值是 URL 请问我该怎么做 谢谢 这应该可以做到 foreach yourArray as key gt value do something with y
  • 如何级联仅保留新实体

    我无法弄清楚如何为以下实体正确设置 JPA 持久性 使用 EclipseLink 和 transaction type RESOURCE LOCAL Entity public class User snip various members
  • 为什么我的 JFrame 没有出现在基于 Web 的 Java 应用程序中?

    我有一个游戏应用程序 将使用该标签在网络浏览器中运行 该程序有一个 JFrame 它显示几个选项卡 允许在整个程序中导航 当我在本地运行该程序时 它将正常工作 显示 JFrame 并完整工作 但是 当我将其上传到主机并访问它的链接时 JFr
  • 是否可以使 grequests 和 requests_cache 一起工作?

    看这段代码 import requests import grequests import requests cache requests cache install cache bla urls http www heroku com h
  • 为什么我只分配了 7 MB 内存就收到内存警告?

    我正在 iPod touch 设备上运行我的 iOS 应用程序并且即使总分配峰值只有 7 MB 我也会收到内存警告如下图 推送游戏场景时会出现这种情况 What 我觉得奇怪就是它 the 左峰值 时间 0 00 对应于分配的 20 MB 内
  • 如何在 vb.net 中使窗口处于活动状态

    所以我正在开发一个程序 该程序可以输入一个没有 api 的开放应用程序 所以我需要选择该窗口 以便我的程序能够在其中输入内容 我正在使用这段代码 但它找不到该进程 Dim windowHandle As IntPtr FindWindow
  • iPhone单元测试链接问题,找不到DevToolsBundleInjection.framework

    我正在尝试为我的 iPhone 应用程序设置应用程序单元测试 因此 我制作了应用程序目标的副本以及单元测试捆绑包目标 如苹果文档中所述 http developer apple com iphone library documentatio
  • 为什么这个 Hotspot JVM 选项不是默认选项? -XX:+PrintConcurrentLocks

    默认情况下 对于 Hotspot CTRL Break 线程转储不会列出线程所持有的内容java lang concurrent锁 据我了解 使用这些锁 Hotspot 无法获得有关在哪个堆栈帧获取锁的信息 如果添加 JVM 选项 XX P
  • 如何在 nvd3 条形图的所有条形上正确居中文本元素

    我想在每个单独的条形上显示 nvd3 条形图的 y 轴值 我可以显示这些值 但我不知道如何将文本元素的高度设置为每个条的中心而不对值进行硬编码 我用 d3 selectAll nv bar 选择每个栏 但这没有高度属性 据我所知 discr
  • 嵌套列表索引[重复]

    这个问题在这里已经有答案了 我在下面显示的代码中使用 Python 中的嵌套列表时遇到了一些问题 基本上 我有一个包含所有 0 值的 2D 列表 我想在循环中更新列表值 然而 Python 并没有产生我想要的结果 有什么我误解的吗range
  • 实体框架核心:使用内存数据存储时如何测试导航属性加载

    实体框架核心中有一个有趣的功能 Entity Framework Core 将自动修复导航属性 到先前加载到上下文中的任何其他实体 实例 因此 即使您没有明确包含 a 的数据 导航属性 如果某些或 所有相关实体均已预先加载 在某些情况下这很
  • Android:R.java:预期错误

    我是 android 开发的初学者 正在遵循developer android com 上的培训指南 更好的教程也将不胜感激 当我开始收到此错误时 我正在添加操作栏 Executing tasks app assembleDebug Con
  • jquery如何从所有元素中删除类

    我正在使用以下内容更改元素的类 data id addClass highlight 给出下面的列表 div ul class edgetoedge li class sep Shakes and Floats li li a href a
  • 贪心算法的汽车加油问题(列表索引超出范围)

    我有一个小问题 使用贪心算法解决汽车加油问题 问题介绍 您将前往距离您的家乡 英里远的另一个城市 你的车可以行驶 满箱油最多可行驶 英里 并且您从满箱油开始 沿途 距离您所在城市 stop1 stop2 stopN 处有加油站 最少需要补充