1 条题解

  • 0
    @ 2026-10-25 16:05:38

    思路

    八向马步建立单位权图,区别棋盘距离与四向移动。

    参考程序(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    int main(){int t;cin>>t;int dx[]={1,1,-1,-1,2,2,-2,-2},dy[]={2,-2,2,-2,1,-1,1,-1};while(t--){int n,a,b,c,d;cin>>n>>a>>b>>c>>d;vector<vector<int>>dist(n,vector<int>(n,-1));queue<pair<int,int>>q;q.push({a,b});dist[a][b]=0;while(!q.empty()){auto p=q.front();q.pop();if(p.first==c&&p.second==d)break;for(int k=0;k<8;k++){int x=p.first+dx[k],y=p.second+dy[k];if(x>=0&&x<n&&y>=0&&y<n&&dist[x][y]<0){dist[x][y]=dist[p.first][p.second]+1;q.push({x,y});}}}cout<<dist[c][d]<<'\n';}}
    
    • 1

    信息

    ID
    1150
    时间
    1000ms
    内存
    64MiB
    难度
    普及−
    标签
    递交数
    1
    已通过
    1
    上传者