求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))

浙公网安备 33010602011771号