求x到y的最少计算次数

题目描述
给定两个-100到100的整数x和y,对x只能进行加1,减1,乘2操作,问最少对x进行几次操作能得到y?
例如:
a=3,b=11: 可以通过3*2*2-1,3次操作得到11;
a=5,b=8:可以通过(5-1)*2,2次操作得到8;

输入描述:
输入以英文逗号分隔的两个数字,数字均在32位整数范围内。
输出描述:
输出一个数字
示例1
输入
3,11
输出
3

 

参考:

思路:广度优先搜索

def bfs(quene,b):
    while quene:
        x = quene.pop(0)  #出栈一个
        if x[0]==b:
            return x[1]
        else:
            quene.append([x[0]+1,x[1]+1])  #添加三个
            quene.append([x[0]-1,x[1]+1])
            quene.append([x[0]*2,x[1]+1])
if __name__=="__main__": a,b = map(int,input().strip().split(',')) quene = [] quene.append([a,0]) print(bfs(quene,b))

 

posted @ 2020-07-28 14:34  Andy_George  阅读(358)  评论(0编辑  收藏  举报