算法.bfs八数码

cpp 复制代码
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
#include<unordered_map>
using namespace std;
int dx[4] = { 1,-1,0,0 };
int dy[4] = { 0,0,-1,1 };
int bfs(string state)
{
    queue<string>q;
    unordered_map<string, int>d;
    q.push(state);
    d[state] = 0;
    while (q.size())
    {
        auto t = q.front();

        int dis = d[t];
        int k = t.find('x');
        int x = k / 3, y = k % 3;

        q.pop();
        string end = "12345678x";
        if (t == end)return d[t];
        for (int i = 0; i < 4; i++)
        {
            int a = x + dx[i], b = y + dy[i];
            if (a >= 0 && a < 3 && b >= 0 && b < 3)
            {
                swap(t[a * 3 + b], t[k]);
                if (!d.count(t))
                {
                    d[t] = dis + 1;
                    q.push(t);
                }
                swap(t[a * 3 + b], t[k]);
            }
            
        }
    }
    
    return -1;
}

int main()
{
    string state;
    for (int i = 0; i < 9; i++)
    {
        char s;
        cin >> s;
        state += s;
    }
    cout << bfs(state);
    return 0;
}
相关推荐
天上路人22 分钟前
A-59F 多功能语音处理模组在本地会议系统扩音啸叫处理中的技术应用与性能分析
人工智能·神经网络·算法·硬件架构·音视频·语音识别·实时音视频
yang_B6211 小时前
噪声处理方法
大数据·人工智能·算法
菜菜小狗的学习笔记1 小时前
剑指Offer算法题(九)搜索
数据结构·算法·深度优先
JosieBook1 小时前
【C#】C# 所有关键字总结
开发语言·算法·c#
无忧智库1 小时前
算力、算法、数据三位一体:构建城市级AI大模型算力池的全景式解构与未来展望(WORD)
大数据·人工智能·算法
蓝天守卫者联盟11 小时前
2026乙酸乙酯回收设备厂家选型与技术实践
java·jvm·python·算法
DDzqss2 小时前
3.25打卡day45
c++·算法
爆更小小刘2 小时前
2.3.1_2 浮点数的表示 IEEE 754(例题训练)
算法
赫瑞2 小时前
Java中的 Dijkstra 算法
java·算法
小羊羔heihei2 小时前
Python编程实战:12道趣味算法题
笔记·python·学习·其他·算法·学习方法·交友