抓住那头牛题解
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;
以上是关于抓住那头牛题解的主要内容,如果未能解决你的问题,请参考以下文章