FJ的牧场完了……

回复帖子

@Bilion_冰凌帅 2018-12-10 19:52 回复

现在不仅有会瞬移的马,还有得了疯牛病的牛QAQ

#include<cstdio>
using namespace std;
struct A
{
    int x,s;
}q[10001];//队列
int n,x,y,i,j,h=1,t=2,s=99999999,tx;
void pd()//判断
{
    if(!(tx<1||tx>y*2))//玄学的判越界
    {//如果没有
        if(tx==y&&q[h].s+1<s)//如果到了且步数小于当前最小步数
            s=q[h].s+1;/当前最小步数更新
        q[t].x=tx; q[t].s=q[h].s+1; t++;//放入队列,下一个位置
    }
    return ;
}
void bfs_qaq()//往前一步的情况
{
    tx=q[h].x+1; pd();
    printf("%d %d ",tx,q[h].s); return ;
}
void bfs_awa()//往后一步的情况
{
    tx=q[h].x-1; pd();
    printf("%d %d ",tx,q[h].s); return ;
}
void bfs_ovo()//往前2*x步的情况
{
    tx=q[h].x*2; pd();
    printf("%d %d\n",tx,q[h].s);
    h++; return ;
}
int bfs()
{
    while(h<t)//只要还没走到
    {
        bfs_qaq(); bfs_awa(); bfs_ovo();//三种拓展
    }
    return s;//返回最小步数
}
int main()
{
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d%d",&x,&y);
        q[1].x=x; q[1].s=0;
        printf("%d",bfs());
    }//输入输出
    return 0;
}