八数码(bfs)
思路:
(1)用string来存储状态,用d<string,int>来记录状态变换次数;
(2)在bfs过程中,先初始化(q,d);每次拿出队头状态,得到x的相对位置,再得到x的矩阵位置,向四个方向尝试走,如果可行,就先做变换,如果该状态没被使用过即没有走回头路,就更新放入队列,另一方面维护d距离;然后恢复现场保证其余三个方向继续使用;如果所有状态都探讨完毕也没有可行解,就输出-1;
代码:
#include<bits/stdc++.h>using namespace std;int dx[] = {1,-1,0,0},dy[] = {0,0,1,-1};void bfs(string start)
{queue<string> q;unordered_map<string,int> d;string end = "12345678x";q.push(start);d[start] = 0;while(!q.empty()){string tmp = q.front();int k = tmp.find('x');q.pop();int x = k/3,y = k%3;int dis = d[tmp];if(tmp == end){cout << d[end] << endl;return;}for(int i = 0;i < 4;i ++){int tx = x + dx[i],ty = y + dy[i];if(tx >=0 && ty >= 0 && tx < 3 && ty < 3){swap(tmp[k],tmp[tx*3 + ty]);if(d.count(tmp) == 0){d[tmp] = dis + 1;q.push(tmp);}swap(tmp[k],tmp[tx*3 + ty]);}}}cout << -1<<endl;return;
}int main()
{string start;for(int i = 0;i < 9;i ++){char c;cin >> c;start = start + c;}bfs(start);return 0;
}
相关文章:
八数码(bfs)
思路: (1)用string来存储状态,用d<string,int>来记录状态变换次数; (2)在bfs过程中,先初始化(q,d);每次拿出队头状态,得到x的相对位置&am…...
CCLINK IE FIELD BASIC转MODBUS-TCP网关cclink与以太网的区别
协议的不同,数据读取困难,这是很多生产管理系统的难题。但是现在,捷米JM-CCLKIE-TCP通讯网关,让这个问题变得非常简单。这款通讯网关可以将各种MODBUS-TCP设备接入到CCLINK IE FIELD BASIC网络中,连接到MODBUS-TCP总线…...
【Rust】Rust学习 第十一章编写自动化测试
Rust 是一个相当注重正确性的编程语言,不过正确性是一个难以证明的复杂主题。Rust 的类型系统在此问题上下了很大的功夫,不过它不可能捕获所有种类的错误。为此,Rust 也在语言本身包含了编写软件测试的支持。 编写一个叫做 add_two 的将传递…...
关于使用pycharm遇到只能使用unittest方式运行,无法直接选择Run
相信大家可能都遇到过这个问题,使用pycharm直接运行脚本的时候,只能选择unittest的方式,能愁死个人 经过几次各种尝试无果之后,博主就放弃死磕了,原谅博主是个菜鸟 后来遇到这样的问题,往往也就直接使用cm…...
Docker+rancher部署SkyWalking8.5并应用在springboot服务中
1.Skywalking介绍 Skywalking是一个国产的开源框架,2015年有吴晟个人开源,2017年加入Apache孵化器,国人开源的产品,主要开发人员来自于华为,2019年4月17日Apache董事会批准SkyWalking成为顶级项目,支持Jav…...
代码随想录第45天 | 322. 零钱兑换、279. 完全平方数
322. 零钱兑换 动规五部曲分析如下: 确定dp数组以及下标的含义 dp[j]:凑足总额为j所需钱币的最少个数为dp[j] 确定递推公式 凑足总额为j - coins[i]的最少个数为dp[j - coins[i]],那么只需要加上一个钱币coins[i]即dp[j - coins[i]] 1就是…...
怎么加入Microsoft Cloud Partner Program?
目录 前言 加入Microsoft Cloud Partner Program 1、注册成为微软合作伙伴 2、完成合作伙伴资格要求...
LNMP简易搭建
目录 前言 一、拓扑图 二、NGINX配置 三、配置MySQL 四、配置php环境 五、部署应用 总结 前言 LNMP平台指的是将Linux、Nginx、MySQL和PHP(或者其他的编程语言,如Python、Perl等)集成在一起的一种Web服务器环境。它是一种常用的开发和部署网…...
CClink IE转Modbus TCP网关连接三菱FX5U PLC
捷米JM-CCLKIE-TCP 是自主研发的一款 CCLINK IE FIELD BASIC 从站功能的通讯网关。该产品主要功能是将各种 MODBUS-TCP 设备接入到 CCLINK IE FIELD BASIC 网络中。 捷米JM-CCLKIE-TCP网关连接到 CCLINK IE FIELD BASIC 总线中做为从站使用,连接到 MODBUS-TCP 总线…...
PyTorch 微调终极指南:第 1 部分 — 预训练模型及其配置
一、说明 如今,在训练深度学习模型时,通过在自己的数据上微调预训练模型来迁移学习已成为首选方法。通过微调这些模型,我们可以利用他们的专业知识并使其适应我们的特定任务,从而节省宝贵的时间和计算资源。本文分为四个部分&…...
GO学习之 微框架(Gin)
GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Htt…...
C语言 字符指针
1、介绍 概念: 字符指针,就是字符类型的指针,同整型指针,指针指向的元素表示整型一样,字符指针指向的元素表示的是字符。 假设: char ch a;char * pc &ch; pc 就是字符指针变量,字符指…...
Springboot所有的依赖
<properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!-- 声明springboot的版本号 -->…...
Flutter BottomSheet 三段式拖拽
BottomSheetBehavior 追踪 BottomSheet系统默认实现效果准备要实现的功能点:定义三段式状态:BottomSheetBehavoir阀值定义1. 未达到滚动阀值,恢复状态2. 达到滚动阀值,更新状态 前面倒是有讲过Android原生的BottomSheetBehavior&a…...
php后端实现调用高德地图进行POI搜索
对于当前位置或者选定省市位置进行查询 接口实现 /*** 查询地址* ApiTitle (查询地址)* ApiSummary (查询地址)* ApiMethod (POST)* ApiRoute (/api/demo/address)* ApiParams (name"dart", type"integer", requiredtrue, description"省…...
uniapp 实现滑动视图切换 顶部滚动导航栏
无论小程序的时候一般有这个功能,在页面处于首页时候,滑动视图,切换视图顶部滚动导航也跟着切换 1.想要实现这个功能就需要实现顶部导航栏,首先实现顶部滚导航栏 点击高亮颜色显示 模板代码 <scroll-view scroll-x"true" class"scroll-content" > …...
ArcGIS API for JavaScript 调用自定义地图模板总结
ArcGIS API for JavaScript 调用自定义地图模板总结 3.9版本4.24版本 3.9版本 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>Hello World</title><link rel"stylesheet" href&qu…...
QGraphicsView实现简易地图5『经纬网格』
前文链接:QGraphicsView实现简易地图4『局部加载-地图漫游』 由于GCJ02 Web 墨卡托投影 纬度并不随像素等分,且两极跨度较大,因此本次演示采用的经纬网等分逻辑为等分像素。同等像素跨度之间,两级纬度变化较小,越靠近赤…...
RestTemplate 请求转发异常 ERR_CONTENT_DECODING_FAILED 200 (OK)
#1 问题描述 在基于Spring Boot的项目中实现了请求转发(使用 RestTemplate 的 exchange 方法)的功能,忽然在前端报net::ERR_CONTENT_DECODING_FAILED 200 (OK)的错误,后端及上游系统日志均显示请求已完成。 #2 原因探寻 上述错…...
用python实现一个异或计算器
有这样一条需求:计算某个文件中的数组每一行元素的最后一个参数,异或输出。 因为元素比较多,十几行,通过人工去计算异或值非常困难。 而在线异或的计算器,也需要人为输入这些数值,每次计算一个最终结果需…...
别再每次新建项目都配一遍了!用VS2022属性表一劳永逸搞定OpenCV环境
VS2022属性表实战:打造可复用的OpenCV开发环境模板 每次新建项目都要重新配置OpenCV环境?这简直是开发者的噩梦。想象一下,你正在为一个紧急项目赶工,却被重复的环境配置拖慢了进度——这种低效操作早该被淘汰了。本文将带你用VS…...
【最后的AGI并跑窗口】:2024–2026是决定未来十年技术主导权的关键三年——基于52项国家级AI战略文件、137家实验室年报与21次闭门听证会的独家研判
第一章:AGI研发的国际竞争格局 2026奇点智能技术大会(https://ml-summit.org) 全球通用人工智能(AGI)研发已进入国家战略竞速阶段,美、中、欧、日、韩等主要经济体正通过政策投入、算力基建、基础模型生态与人才计划构建多维竞争…...
如何为你的技术项目找到完美的编程语言图标?这50+高清资源库就是答案
如何为你的技术项目找到完美的编程语言图标?这50高清资源库就是答案 【免费下载链接】programming-languages-logos Programming Languages Logos 项目地址: https://gitcode.com/gh_mirrors/pr/programming-languages-logos 你是否在为技术文档、博客文章或…...
【日常做题】 代码随想录(岛屿最大面积+寻宝)
👨💻 关于作者:会编程的土豆 “不是因为看见希望才坚持,而是坚持了才看见希望。” 你好,我是会编程的土豆,一名热爱后端技术的Java学习者。 📚 正在更新中的专栏: 《数据结构与算…...
别再只画时频图了!用Python的scipy.signal.stft函数,深入理解STFT的幅度谱与相位谱
深入解析STFT:从幅度谱与相位谱中挖掘信号处理的黄金信息 信号处理工程师们常把短时傅立叶变换(STFT)当作时频分析的标准工具,但大多数人只停留在绘制时频图的层面。当我们打开一个音频文件或振动传感器数据时,那个色彩斑斓的时频图确实能直观…...
黄仁勋可能开始焦虑了
只做卖铲人,已经不能让 Nvidia 高枕无虞了。 2026年4月15日,黄仁勋在Dwarkesh Patel 的播客里经历了一场他很久没经历过的尖锐追问。一个多小时的对话,他反复用来定义英伟达的那句话是:“必须有东西把电子变成token。”他把自家公…...
3分钟掌握深蓝词库转换:让你的输入习惯跨越所有设备
3分钟掌握深蓝词库转换:让你的输入习惯跨越所有设备 【免费下载链接】imewlconverter ”深蓝词库转换“ 一款开源免费的输入法词库转换程序 项目地址: https://gitcode.com/gh_mirrors/im/imewlconverter 你是否曾为在不同设备上输入效率大幅下降而烦恼&…...
跨平台流媒体下载终极指南:N_m3u8DL-RE一键解密加密视频教程
跨平台流媒体下载终极指南:N_m3u8DL-RE一键解密加密视频教程 【免费下载链接】N_m3u8DL-RE Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文. 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL…...
MySQL 8.0升级后,SpringBoot老项目启动就报Communications link failure?一个参数救活它
MySQL 8.0升级后SpringBoot项目连接失败的深度解析与解决方案 最近在技术社区看到不少开发者反馈,将MySQL从5.x升级到8.0后,原本运行良好的SpringBoot项目突然无法启动,抛出"Communications link failure"错误。这其实是一个典型的…...
Calibre-Douban插件实战:高效获取豆瓣图书元数据的完整指南
Calibre-Douban插件实战:高效获取豆瓣图书元数据的完整指南 【免费下载链接】calibre-douban Calibre new douban metadata source plugin. Douban no longer provides book APIs to the public, so it can only use web crawling to obtain data. This is a calibr…...
