码迷,mamicode.com
首页 > 其他好文 > 详细

抓住那头牛【题解】

时间:2019-06-04 22:34:12      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:amp   cto   using   map   define   for   数学   struct   main   

一个玄学的广搜边界>=0,<=k+10,这个边界可能可以数学上证明,其他就是简单的广搜,然后输出步数,就可以了

#include <iostream> 
#include <cstdio> 
#include <fstream> 
#include <algorithm> 
#include <cmath> 
#include <deque> 
#include <vector> 
#include <queue> 
#include <string> 
#include <cstring> 
#include <map> 
#include <stack> 
#include <set> 
#define N 100010
using namespace std;
struct ddd
{
	int x,s;
};
int n,k;
bool used[N*10];
void bfs(int x)
{
	queue<ddd> s;
	ddd k1;
	k1.x=x;
	k1.s=0;
	s.push(k1);
	while(!s.empty())
	{
		ddd k2,k3;
		k2=s.front();
		s.pop();
		if(k2.x==k)
		{
			cout<<k2.s<< endl;
			exit(0);
		}
		k3.x=k2.x*2;
		k3.s=k2.s+1;
		if(k3.x>=0&&k3.x<=N&&!used[k3.x])
		{
			used[k3.x]=true;
			s.push(k3);
		}
		for(int i=-1;i<=1;i+=2)
		{
			k3.x=k2.x+i;
			k3.s=k2.s+1;
			if(k3.x>=0&&k3.x<=N&&!used[k3.x])
			{
				used[k3.x]=true;
				s.push(k3);
			}
		}
	}
}
int main()
{
	cin>>n>>k;
	if(n==k)
	{
		cout<<"0"<< endl;
		return 0;
	}
	bfs(n);
	return 0;
}

 

抓住那头牛【题解】

标签:amp   cto   using   map   define   for   数学   struct   main   

原文地址:https://www.cnblogs.com/xzx-1228/p/10976476.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!