假设我们有一辆汽车,正在一维道路上行驶。当前,我们处于位置= 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