您的位置:首页 > 其它

我跳我跳我跳跳跳(bfs)

2014-02-15 19:30 148 查看
aacf

我跳我跳我跳跳跳


Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

有一条直线,上有n个点,编号从0到n-1。当小A站在s点处,每次可以往前跳到s+1,也可以往前跳到s-1(当s-1 >= 0时),也可以调到2*s处。现在问小A最少跳多少次才能跳到点e处。

输入

多组输入。每组输入两个整数s,e(0 <= s,e <= 100,000)。n趋于无穷大。

输出

输出小A从s跳到e的最小次数。

示例输入

5 17


示例输出

4


 

#include <stdio.h>
#include <stdlib.h>
struct node
{
int x,c;
}q[100003],t,f;
int v[100005];
int tw[3]={-1,1};
int main()
{
int n,m,s,e,i;
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(v,0,sizeof(v));
t.x=n;
t.c=0;
e=0;
s=0;
q[e++]=t;
v[t.x]=1;
while(s<e)
{
t=q[s++];
if(t.x==m)
{
printf("%d\n",t.c);
break;
}
for(i=0;i<3;i++)
{
if(i!=2)
f.x=t.x+tw[i];
else f.x=t.x*2;
if(f.x>=0&&f.x<=100000&&v[f.x]==0)
{
f.c=t.c+1;
q[e++]=f;
v[f.x]=1;
}
}
}
}
return 0;
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: