抓住那头牛题解

Posted xzx-1228

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抓住那头牛题解相关的知识,希望对你有一定的参考价值。

一个玄学的广搜边界>=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;

 

以上是关于抓住那头牛题解的主要内容,如果未能解决你的问题,请参考以下文章

[bfs最短路] aw1100. 抓住那头牛(bfs最短路+模板题)

抓住那头牛

抓住那头牛

2971:抓住那头牛

poj3278--抓住那头牛

2971:抓住那头牛