hdoj_2717Catch That Cow

Catch That Cow

Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4193    Accepted Submission(s): 1354


Problem 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
有点记忆化搜索的味道=。=

#include <iostream>
#include <cstring>
#include <queue>
using namespace std;
#define MAX 100005
bool vis[MAX];
typedef struct Point
{
	int x;
	int cnt;
}Point;
queue<Point>Q;

int bfs(int x, int y)
{
	while (!Q.empty())
	{
		Q.pop();
	}
	Point pre, next;
	pre.x = x;
	vis[x] = true;
	pre.cnt = 0;
	Q.push(pre);
	while(!Q.empty())
	{
		pre = Q.front();
		if(pre.x == y)
		{
			return pre.cnt;
		}
		Q.pop();

		next.x = pre.x + 1;
		if(next.x <= MAX && !vis[next.x])
		{
			vis[next.x] = true;
			next.cnt = pre.cnt + 1;
			Q.push(next);
		}

		next.x = pre.x - 1;
		if(next.x >= 0 && !vis[next.x])
		{
			vis[next.x] = true;
			next.cnt = pre.cnt + 1;
			Q.push(next);
		}

		next.x = pre.x * 2;
		if(next.x <= MAX && !vis[next.x])
		{
			vis[next.x] = true;
			next.cnt = pre.cnt + 1;
			Q.push(next);
		}
	}
	return 0;
}

int main()
{
	int n, k;
	while(cin >> n >> k)
	{
		memset(vis, false, sizeof(vis));
		if(n >= k)
		{
			cout << n - k << endl;
		}
		else
		{
			cout << bfs(n, k) << endl;	
		}
	}
}



原文地址:https://www.cnblogs.com/lgh1992314/p/5835121.html