好奇怪的游戏(BFS)

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;

int dx[] = {1,1,2,2,-1,-1,-2,-2,2,2,-2,-2};
int dy[] = {2,-2,1,-1,2,-2,1,-1,2,-2,2,-2};

int bfs(int a,int b){
    queue<pair<int,int>> q;
    vector<vector<int>> dis(20,vector<int>(20,-1)); // 20x20的棋盘,初始化所有位置的步数为-1
    dis[a][b] = 0;
    q.push({a,b});


    while(q.size()){
        auto [x,y] = q.front();
        q.pop();

        if(dis[0][0] != -1){//一旦目标位置 (0, 0) 的步数已经被计算出来,直提前结束 BFS。
            return dis[0][0];;
        }

        for(int i=0;i<12;i++){
            int nx = x + dx[i];
            int ny = y + dy[i];

            if(nx>=0 && nx<20 && ny>=0 && ny<20 && dis[nx][ny]==-1){
                dis[nx][ny] = dis[x][y] + 1;// 更新最短步数
                q.push({nx,ny}); // 将新的位置加入队列
            }
        }
    }
    return dis[0][0];
}

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    int x1,x2,y1,y2;
    cin>>x1>>y1>>x2>>y2;
    x1--,x2--,y1--,y2--; // 将坐标调整为0基索引
    cout<<bfs(x1,y1)<<endl;
    cout<<bfs(x2,y2);

    return 0;
}

注意将坐标调整为0基索引

相关推荐
梅茜Mercy1 小时前
数据结构:链表(经典算法例题)详解
数据结构·链表
88号技师1 小时前
2024年12月一区SCI-加权平均优化算法Weighted average algorithm-附Matlab免费代码
人工智能·算法·matlab·优化算法
IT猿手1 小时前
多目标应用(一):多目标麋鹿优化算法(MOEHO)求解10个工程应用,提供完整MATLAB代码
开发语言·人工智能·算法·机器学习·matlab
青春男大1 小时前
java栈--数据结构
java·开发语言·数据结构·学习·eclipse
88号技师1 小时前
几款性能优秀的差分进化算法DE(SaDE、JADE,SHADE,LSHADE、LSHADE_SPACMA、LSHADE_EpSin)-附Matlab免费代码
开发语言·人工智能·算法·matlab·优化算法
Zer0_on1 小时前
数据结构栈和队列
c语言·开发语言·数据结构
一只小bit1 小时前
数据结构之栈,队列,树
c语言·开发语言·数据结构·c++
我要学编程(ಥ_ಥ)2 小时前
一文详解“二叉树中的深搜“在算法中的应用
java·数据结构·算法·leetcode·深度优先
埃菲尔铁塔_CV算法2 小时前
FTT变换Matlab代码解释及应用场景
算法
la_vie_est_belle2 小时前
《Cocos Creator游戏实战》非固定摇杆实现原理
游戏·cocos creator·游戏开发·cocos·非固定摇杆