Catch That Cow(队列)

来源:互联网 发布:2015网络词 编辑:程序博客网 时间:2024/06/05 05:52

题目:

http://acm.hdu.edu.cn/showproblem.php?pid=2717

 

第一个数用3种方法(+1,-1,*2)到第二个数 最少步骤;

代码

#include<iostream>#include<cstring>#include<queue>using namespace std;struct node{int x;int step;} ;int s,e;int use[100005];int dfs(int x){queue<node>q;node tp,ans;int tx;ans.x=s;ans.step=0;use[x]=0;q.push(ans);while(!q.empty()){tp=q.front();q.pop();tx=tp.x+1;if(tx<0||tx>100000);else{if(use[tx]){use[tx]=0;ans.x=tx;ans.step=tp.step+1;q.push(ans);if(tx==e)return ans.step;}}tx=tp.x-1;if(tx<0||tx>100000);else{if(use[tx]){use[tx]=0;ans.x=tx;ans.step=tp.step+1;q.push(ans);if(tx==e)return ans.step;}}tx=tp.x*2;if(tx<0||tx>100000);else{if(use[tx]){use[tx]=0;ans.x=tx;ans.step=tp.step+1;q.push(ans);if(tx==e)return ans.step;}}}}int main(){while(cin>>s>>e){if(s==e)cout<<'0'<<endl;else{memset(use,1,sizeof(use));cout<<dfs(s)<<endl;}}return 0;}


 

0 0