在Python中找出达到终点所需的移动次数的程序
假设我们有一辆车,正在一维道路上行驶。目前我们的位置是0,速度为1。我们可以执行任何两个操作中的任何一个。
- 加速:位置:=位置+速度,速度:=速度*2 倒挡:速度:=−1(当速度>0时),否则速度:= 1。
我们必须找出到达目标所需的最少移动次数。
因此,如果输入为target = 10,则输出将为7。
要解决此问题,我们将遵循以下步骤-
- 定义一个函数dfs()。这将取代数字、成本、pos、neg、目标
只要完成步骤1~9,无论结果如何,都会返回结果,然后再去执行步骤10~13。
* tot:=成本+2*(pos-1)和2 *(neg-1)的最大值。
- 如果tot≥ans,那么
- 返回
- 如果目标与0相同,则
- ans:=最小值ans和tot
-
返回
-
步骤:=(2^digit)- 1
-
如果步骤*2<|target|,则
- 返回
- dfs(digit-1,cost,pos,neg,target)
-
dfs(digit-1,cost+digit,pos+1,neg,target-step)
-
dfs(digit-1,cost+digit2,pos+2,neg,target-step2)
-
dfs(digit-1,cost+digit,pos,neg+1,target+step)
-
dfs(digit-1,cost+digit2,pos,neg+2,target+step2)
- 从主函数中执行以下操作-
-
ans:=无限大
-
hi:=1
-
while 2^hi<target, do
-
hi:=hi+1
-
dfs(hi,0,0,0,target)
-
返回ans
- 从主函数中执行以下操作-
让我们看以下实现以更好的理解-
更多Python相关文章,请阅读:Python 教程