本文共 681 字,大约阅读时间需要 2 分钟。
#include <iostream>
#include <queue>
using namespace std;
queue<int> q1;
int m, n;
int used[10001] = {0};
int step[10001];
int bfs();
int moveto(int u, int dire);
int main()
{
int num ;
cin >> m >> n ;
q1.push(m) ;
used[m] = 1 ;
step[m] = 0 ;
num = bfs();
cout << num << endl ;
}
int bfs()
{
int u , v , i ;
while (!q1.empty())
{
u = q1.front() ;
q1.pop() ;
for (i = 0 ; i < 3 ; i++)
{
v = moveto (u , i) ;
if(v == n)
{
return (step[u] + 1) ;
}
if(v <= n && used[v] == 0)
{
q1.push(v);
used[v] = 1 ;
step[v] = step[u] + 1 ;
}
}
}
}
int moveto(int u , int dire)
{
if(dire == 0)
{
return (u + 1) ;
}
else if(dire == 1)
{
return (u * 2) ;
}
else if(dire == 2)
{
return (u * u);
}
}
转载地址:http://dcml.baihongyu.com/