5先入列   把5出列  5 可以变成 4 ,6 , 10, ,把得到的数入列,然后再出列分别处理..如果前面出现过就不入列..定义一个计数数组,然后number[y - 1] = number[y] + 1;  number[y + 1] = number[y] + 1; number[y * 2] = number[y] + 1;

Catch That Cow
 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8341 Accepted: 2476

Description

Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a number line and the cow is at a point K (0 ≤ K ≤ 100,000) on the same number line. Farmer John has two modes of transportation: walking and teleporting.

* Walking: FJ can move from any point X to the points X - 1 or X + 1 in a single minute
* Teleporting: FJ can move from any point X to the point 2 × X in a single minute.

If the cow, unaware of its pursuit, does not move at all, how long does it take for Farmer John to retrieve it?

Input

Line 1: Two space-separated integers: N and K

Output

Line 1: The least amount of time, in minutes, it takes for Farmer John to catch the fugitive cow.

Sample Input

`5 17`

Sample Output

`4`

Hint

The fastest way for Farmer John to reach the fugitive cow is to move along the following path: 5-10-9-18-17, which takes 4 minutes.

Source Code

 Problem: 3278 User: luoguangyao Memory: 1048K Time: 110MS Language: C++ Result: Accepted
• Source Code
```#include <iostream>
#include <queue>
using namespace::std;
int number = {0};
bool num = {0};
int main()
{
queue<int> x;
int a;
int b;
scanf("%d%d",&a,&b);
int count = 0;
number[a] = 0;
x.push(a);
while (x.size())
{
int y = x.front();
x.pop();
num[y] = 1;
if (y == b)
{
break;
}
else
{
if (y - 1 >= 0)
{
if (!num[y - 1])
{
x.push(y - 1);
number[y - 1] = number[y] + 1;
num[y - 1] = 1;
}
}
if (y + 1 <= 100000)
{
if (!num[y + 1])
{
x.push(y + 1);
number[y + 1] = number[y] + 1;
num[y + 1] = 1;
}
}
if (y * 2 <= 100000)
{
if (!num[y * 2])
{
x.push(y * 2);
number[y * 2] = number[y] + 1;
num[y * 2] = 1;
}
}
}
}
cout << number[b] << endl;
return 0;
}```
posted on 2009-03-07 18:33 生活要低调 阅读(1411) 评论(0)  编辑 收藏 引用 < 2009年3月 >
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

•