1541.加1乘2平方
时限:1000ms 内存限制:10000K 总时限:3000ms
描述
给定两个正整数m、n,问只能做加1、乘2和平方这三种变化,从m变化到n最少需要几次
输入
输入两个10000以内的正整数m和n,且m小于n
输出
输出从m变化到n的最少次数
#include <iostream>
#include <queue>
using namespace std;
int m,n;
int step[10000]; //记录到达每个数字所用的步数
int used[10000]; //节点判重
queue <int> q1;
void init();
int bfs();
int change(int now, int i); //对元素now做三种操作,返回操作后的值
bool isTarget(int now, int next); //判断next是否到达目标?
//到达目标返回true
//未到达目标,将next入队,返回false
int main()
{
while(cin>>m>>n)
{
init();
cout<<bfs()<<endl;
}
return 0;
}
void init()
{
for(int i=0; i<n; i++) //初始化步数数组、判重数组
{
step[i]=used[i]=0;
}
while