当前位置: 首页 > 编程笔记 >

找出在Python中到达终点的移动次数的程序

孟均
2023-03-14
本文向大家介绍找出在Python中到达终点的移动次数的程序,包括了找出在Python中到达终点的移动次数的程序的使用技巧和注意事项,需要的朋友参考一下

假设我们有一辆汽车,正在一维道路上行驶。当前,我们处于位置= 0且速度=1。我们可以执行这两个操作中的任何一个。

  • 加速度:位置:=位置+速度和速度:=速度* 2倒档:速度:= -1(当速度> 0时,否则速度:= 1)。

我们必须找到至少达到目标所需的移动次数。

因此,如果输入类似于target = 10,则输出将为7。

为了解决这个问题,我们将遵循以下步骤-

  • 定义一个功能dfs()。这需要数字,费用,排名,否定目标

    • 返回

    • ans:= ans和tot的最小值

    • 返回

    • 返回

    • tot:=成本+最大值2 *(pos − 1)和2 *(neg − 1)

    • 如果tot> = ans,则

    • 如果目标等于0,则

    • 步骤:=(2 ^ digit)− 1

    • 如果步骤* 2 <| target |,则

    • dfs(数字-1,费用,排名,否定目标)

    • dfs(数字− 1,成本+数字,pos + 1,负数,目标-步骤)

    • dfs(数字-1,费用+数字* 2,pos + 2,负数,目标-步骤* 2)

    • dfs(数字− 1,成本+数字,pos,负+ 1,目标+步长)

    • dfs(数字− 1,成本+数字* 2,pos,负+ 2,目标+步数* 2)

    • 在主要功能中,执行以下操作-

    • ans:=无限

    • 嗨:= 1

    • 而2 ^ hi <目标,做

      • 嗨:=嗨+ 1

    • dfs(hi,0,0,0,目标)

    • 返回ans

    让我们看下面的实现以更好地理解-

    示例

    class Solution:
       def solve(self, target):
          self.ans = int(1e9)
          hi = 1
          while (1 << hi) < target:
             hi += 1
          self.dfs(hi, 0, 0, 0, target)
          return self.ans
       def dfs(self, digit, cost, pos, neg, target):
          tot = cost + max(2 * (pos − 1), 2 * neg − 1)
          if tot >= self.ans:
             return
          if target == 0:
             self.ans = min(self.ans, tot)
             return
          step = (1 << digit) − 1
          if step * 2 < abs(target):
             return
          self.dfs(digit − 1, cost, pos, neg, target)
          self.dfs(digit − 1, cost + digit, pos + 1, neg, target − step)
          self.dfs(digit − 1, cost + digit * 2, pos + 2, neg, target − step * 2)
          self.dfs(digit − 1, cost + digit, pos, neg + 1, target + step)
          self.dfs(digit − 1, cost + digit * 2, pos, neg + 2, target + step * 2)
    ob = Solution()
    print(ob.solve(10))

    输入值

    10
    输出结果
    7

     类似资料:
    • 问题声明:给定数组:[1,0,1,0,1,1,1,1,1,0,1,1,1,0]输出:到达结束所需的最小步骤 条件: 0上的步骤是退出 我已经完成了不使用DP的情况下的使用,是否存在针对此问题的DP解决方案。 我的代码:

    • 当且仅当“字符串中的所有不同字符重复相同次数”时,称字符串为良好字符串。 现在,给定一个长度为n的字符串,我们必须在这个字符串中进行的最小更改次数是多少,这样字符串就变得正常了。 注意:我们只允许使用小写英文字母,我们可以将任何字母更改为任何其他字母。 示例:让String为yyxzzxxx 那么这里的答案是2。 说明:一种可能的解决方案YYXYXX。我们已将2“z”更改为2“y”。现在“x”和“

    • 问题内容: 我有以下问题:我在xUbuntu OS上,并且试图在Flask应用程序中使用networkx,并且我有以下代码: 最后一行是第411行。出现以下错误: 是什么导致此问题?我已经安装了networkx和pygraphviz,但是仍然出现此错误。任何想法如何解决这个问题? 问题答案: 没有Graphviz,PyGraphviz不能工作。也安装。

    • 本文向大家介绍Python程序,用于在图形中使用BFS查找可从节点到达的所有节点,包括了Python程序,用于在图形中使用BFS查找可从节点到达的所有节点的使用技巧和注意事项,需要的朋友参考一下 当需要查找树的所有节点的总和时,将创建一个类,该类包含设置根节点,向树中添加元素,搜索特定元素以及将树中的元素添加至的方法。找到总和,依此类推。可以创建该类的实例来访问和使用这些方法。 以下是相同的演示-

    • 本文向大家介绍使用Lambda表达式查找出现的奇数次并减少Python中的函数,包括了使用Lambda表达式查找出现的奇数次并减少Python中的函数的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们需要从列表中找到该数字,该数字在给定列表中出现奇数次。我们还需要使用Lambda函数和reduce函数。 我们设计了一个函数,其中通过应用Lambda函数检查元素是否存在奇数次来使用reduce

    • 问题:到达终点的最小跳跃次数 给定一个整数数组,其中每个元素表示可以从该元素向前执行的最大步数。编写一个函数返回到达数组末尾的最小跳转次数(从第一个元素开始)。如果一个元素是0,那么我们不能移动该元素。 例子: 输入:arr[]={1,3,5,8,9,2,6,7,6,8,9}输出:3(1- 来源:http://www.geeksforgeeks.org/minimum-number-of-jump