zoukankan      html  css  js  c++  java
  • 一道简单的广搜题:Knight Moves

    这本来是要用双向宽度搜索的,但是我用简单的广搜也成功了,L<=300,也不会超时??

    另外一个问题就是,我本来想用原来的代码交,结果80分??将边界条件从小于L改成小于等于L,就对了。我可能不会下棋。。。

    #include<bits/stdc++.h>
    using namespace std;
    int dx[8]={1,1,2,2,-1,-1,-2,-2};
    int dy[8]={2,-2,1,-1,2,-2,-1,1};
    //int maxs=-1;
    //bool bz[100][100];
    int s[400][400];
    int main()
    {
        int n;
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            int i1,i2,j1,j2;
            memset(s,0xff,sizeof(s));
            int q[100000][3];
            int L;
            cin>>L;
            cin>>i1>>j1;
            cin>>i2>>j2;
            if(i2==i1&&j2==j1)
            {
                cout<<0<<endl;
                continue;
            }
            int head=0,tail=1;
            q[1][1]=i1,q[1][2]=j1,q[1][3]=0;
            bool f=0;
            while(head<tail)
            {
                head++;
                for(int k=0;k<8;k++)
                {
                    int x=q[head][1]+dx[k];
                    int y=q[head][2]+dy[k];
                    if(x>=0&&x<=L&&y>=0&&y<=L&&s[x][y]==-1)
                    {
                        s[x][y]=q[head][3]+1;
                        tail++;
                        q[tail][1]=x;
                        q[tail][2]=y;
                        q[tail][3]=s[x][y];
                        if(s[i2][j2]>-1)
                        {
                            f=1;
                            cout<<s[i2][j2]<<endl;
                            break;
                        }
                    }        
                }
                if(f) break;
            }
        }
        
    }
  • 相关阅读:
    bzoj1001 狼抓兔子
    bzoj1015 星球大战
    noip模拟赛 楼
    noip模拟赛 radius
    noip模拟赛 helloworld
    noip模拟赛 hungary
    noip模拟赛 gcd
    洛谷P3375【模板】KMP字符串匹配
    noip模拟赛 隔壁
    noip模拟赛 对刚
  • 原文地址:https://www.cnblogs.com/719666a/p/9520404.html
Copyright © 2011-2022 走看看