求助站外题
  • 板块灌水区
  • 楼主GeorgeCanFound
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/11/4 19:44
  • 上次更新2023/10/27 04:18:51
查看原帖
求助站外题
568971
GeorgeCanFound楼主2022/11/4 19:44

rt,萌新不会BFS,代码错误求调

#include<bits/stdc++.h>

using namespace std;

const int dx[8] = { 1 , 1 , -1 , -1 , 2 , 2 , -2 , -2 } , dy[8] = { 2 , -2 , 2 , -2 , 1 , -1 , 1 , -1 };
int head , tail , n , t , begin_x , begin_y , end_x , end_y , que[300][2] , dis[300][300];

int main()
{
    cin >> t;
    while( t-- )
    {
        cin >> n >> begin_x >> begin_y >> end_x >> end_y;
        head = tail = 0;
        que[tail][0] = begin_x , que[tail++][1] = begin_y;
        for( int i = 0 ; i < n ; ++i )
            for( int j = 0 ; j < n ; ++j )
                dis[i][j] = 1e8;
        dis[begin_x][begin_y] = 0;
        while( head < tail )
        {
            int x = que[head][0] , y = que[head++][1];
            for( int i = 0 ; i < 8 ; ++i )
            {
                int tmp_x = dx[i] + x , tmp_y = dy[i] + y;
                if( x >= 0 && x < n && y >= 0 && y < n )
                {
                    dis[tmp_x][tmp_y] = dis[x][y] + 1;
                    que[tail][0] = tmp_x , que[tail++][1] = tmp_y;
                }
            }
        }
        cout << dis[end_x][end_y] << endl;
    }
    return 0;
}
2022/11/4 19:44
加载中...