搜索算法(算法竞赛、蓝桥杯)--BFS八数码难题、抓住那头牛、魔板问题

1、B站视频链接:B14 BFS 八数码难题_哔哩哔哩_bilibili

题目链接:八数码难题 - 洛谷

#include <bits/stdc++.h>
using namespace std;
char c;
string str;
unordered_map<string,int> d;//记录步数
queue<string> q;
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};int bfs(string str){q.push(str);string end="123804765";while(q.size()){auto s=q.front();q.pop();if(s==end)return d[s];int k=s.find('0');int x=k/3,y=k%3;//一维变二维,映射到九宫格对应坐标上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)continue;int dis=d[s];//记录步数swap(s[k],s[a*3+b]);//交换,乘3加余数if(!d.count(s))d[s]=dis+1,q.push(s);//新布局,步数加一 swap(s[k],s[a*3+b]);//还原继续探照其它的方向 } }
}
int main(){for(int i=0;i<9;i++){cin>>c;str+=c;}cout<<bfs(str);return 0;
} 

2、B站视频链接:B15 BFS 抓住那头牛_哔哩哔哩_bilibili

题目链接:[USACO07OPEN] Catch That Cow S - 洛谷 

#include <bits/stdc++.h>
using namespace std;const int N=100010;
int x,y,dis[N];//记录步数 void bfs(){memset(dis,-1,sizeof dis);//初始化步数dis[x]=0;queue<int> q;q.push(x);//人的位置入队while(q.size()){int x=q.front();q.pop();if(x+1<N&&dis[x+1]==-1){//前进一步,剪枝判重 dis[x+1]=dis[x]+1;//步数加一q.push(x+1);//更新人的位置入队 }if(x-1>0&&dis[x-1]==-1){//后退一步 dis[x-1]=dis[x]+1;q.push(x-1);}if(x*2<N&&dis[2*x]==-1){//走到2*x dis[2*x]=dis[x]+1;q.push(2*x);}if(x==y){//抓住了牛 printf("%d\n",dis[y]);//抓住牛需要的步数 return;}} 
}
int main(){int t;cin>>t;while(t--){cin>>x>>y,bfs();}return 0;
}

3、B站视频链接:B16 BFS 魔板_哔哩哔哩_bilibili

题目链接:[USACO3.2] 魔板 Magic Squares - 洛谷

#include <bits/stdc++.h>
using namespace std;
string ed;//目标串(别用end取名,会报错)
queue<string> q;//队列<状态串>
map<string,string> mp;//哈希<状态串,操作串>void moveA(string x){string y=x;for(int i=0;i<4;i++)swap(x[i],x[7-i]);if(mp.count(x)==0)q.push(x),mp[x]=mp[y]+'A';
}
void moveB(string x){string y=x;x[0]=y[3],x[1]=y[0],x[2]=y[1],x[3]=y[2],//暴力一一对应 x[4]=y[5],x[5]=y[6],x[6]=y[7],x[7]=y[4];if(mp.count(x)==0)q.push(x),mp[x]=mp[y]+'B';
}
void moveC(string x){string y=x;x[1]=y[6],x[2]=y[1],x[5]=y[2],x[6]=y[5];if(mp.count(x)==0)q.push(x), mp[x]=mp[y]+'C';
}
void bfs(){q.push("12345678");mp["12345678"]="";//无操作while(q.size()){string s=q.front();q.pop();moveA(s);moveB(s);moveC(s);if(mp.count(ed)){cout<<mp[ed].size()<<endl<<mp[ed];return ;}}
}
int main(){char c;for(int i=0;i<8;i++){cin>>c,ed+=c;}bfs();return 0;
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/691299.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务—RabbitMQ高级(业务在各方面的可靠性)

本博客为个人学习笔记&#xff0c;学习网站&#xff1a;2023黑马程序员RabbitMQ入门到实战教程 高级篇章节 目录 生产者可靠性 生产者重连机制 生产者确认机制 介绍 实现 总结与建议 MQ可靠性 数据持久化 LazyQueue 消费者可靠性 消费者确认机制 失败重试机制 失…

nginx 安装

Nginx 简介 nginx一种十分轻量级的http服务器一种高性能的HTTP和反向代理服务器,同时是一个IMAP/POP3/SMTP 代理服务器其中官网网站 安装Nginx 使用源码编辑安装 #提前安装相关工具软件包 yum -y install net-tools tar unzip gcc make pcre-devel openssl-devel httpd-too…

深度学习之pytorch实现逻辑斯蒂回归

深度学习之pytorch实现逻辑斯蒂回归 解决的问题数学公式logiatic函数损失值 代码与线性回归代码的区别数据损失值构造回归的函数 结果分析 解决的问题 logistic 适用于分类问题&#xff0c;这里案例( y为0和1 &#xff0c;0和 1 分别代表一类&#xff09; 于解决二分类&#xf…

2024上海国际地下空间工程与技术展览会

2024上海国际地下空间工程与技术展览会 Underground Space Project and Technology Exhibition 2024 2024年10月31日-11月2日 上海世博展览馆 国展路1099号 展会规模&#xff1a;25000平方米 主办单位&#xff1a;联合国人居署 上海市住房与城乡建设管理委员会 一、城博会…

农村分散式污废水处理需要哪些设备

农村地区由于存在分散式的生活污废水&#xff0c;需要通过适合的设备进行处理和处理。在农村分散式污废水处理中&#xff0c;有几种主要的设备是必不可少的&#xff1a; 1. 废水收集器&#xff1a;废水收集器用于将分散式废水收集起来&#xff0c;确保其能够被有效地输送至处理…

高压圆盘电阻器----氧化锌电阻(1)?

特点 1&#xff09;100%陶瓷固体压铸结构&#xff0c;主要由氧化锌、氧化铝、氧化镁和人造粘土组成 2&#xff09;承受高脉冲能量&#xff0c;适用于超高压环境&#xff0c;可用于1000kV以上电路&#xff0c;瞬时功率可达3kkw 3&#xff09;无感设计&#xff0c;非传统绕线&…

cookie,sessionStorage和localStorage的区别

cookie、sessionStorage和localStorage都是浏览器的本地存储技术&#xff0c;它们有一些共同点&#xff0c;如都是用来在客户端存储数据&#xff0c;但也有一些重要的区别。 1. 存储大小&#xff1a; cookie的数据大小通常不能超过4KB&#xff0c;这是由HTTP协议的限制决定的…

【ArcGIS Pro二次开发】(82):玩个花活_控规指标块生成

一、要实现的效果 废话不多说&#xff0c;这次要实现的是类似控规指标块的标注&#xff1a; 这里只是示例&#xff0c;用了5个格子&#xff0c;做成9个格子也是可以的。 实现这个效果最关键的是要用到Pro中的复合标注。 关于复合标注的用法可以搜一下帮助里的【使用复合注释…

基于WOA优化的Bi-LSTM多输入回归预测(Matlab)鲸鱼算法优化双向长短期神经网络回归预测

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、算法介绍&#xff1a; 鲸鱼优化算法&#xff08;WOA&#xff09;&#xff1a; 双向长短期神经网络&#xff08;Bi-LSTM&#xff09;&#xff1a…

raspi_os 32-bit lite下使用摄像头

前置条件&#xff1a;已经烧录32位版本的raspi os 按照如下步骤即可使用摄像头&#xff1a; 将SD卡放入读卡器插到电脑上根目录下打开config.txtctrl f 查找到camera_auto_detect1将其注释定位到文件末尾添加如下 gpu_mem128 start_x1将SD卡放回树莓派启动&#xff0c;键入…

VMware下安装银河麒麟V10操作系统

VMware下安装银河麒麟V10操作系统 文章目录 下载在VMware中应用编辑虚拟机设置 在麒麟系统内安装 下载 官网下载&#xff1a;https://www.kylinos.cn/ 银河麒麟、中标麒麟、开放麒麟、星光麒麟 在VMware中应用 1.新建虚拟机 2.稍后安装操作系统 3.新建虚拟机向导&#xff0…

【无标题】力扣报错:member access within null pointer of type ‘struct ListNode‘

项目场景&#xff1a; 做单链表反转题目&#xff0c;报错&#xff1a;member access within null pointer of type ‘struct ListNode’ 题目链接:LINK 问题描述 我明明在初始化指针时候&#xff0c;已经处理了n2->next情况却依然报错 这个报错提示含义是&#xff1a;大概就…

Photoshop 2023(Ps)下载安装及详细安装教程

Photoshop(Ps)的介绍 Adobe Photoshop&#xff0c;简称“PS”&#xff0c;是由AdobeSystems开发和发行的图像处理软件。Photoshop主要处理以像素所构成的数字图像。使用其众多的编修与绘图工具&#xff0c;可以有效地进行图片编辑和创造工作。PS有很多功能&#xff0c;在图像、…

拼夕夕 拼多多关键词恢复供应,欢迎骚扰

API接口&#xff08;Application Programming Interface&#xff09;是一种定义了软件组件之间交互的规范。它允许不同的软件系统之间进行通信和数据交换&#xff0c;使得开发者可以利用已有的功能和服务来构建自己的应用程序。 API接口可以分为不同的类型&#xff0c;包括Web …

代理模式(Proxy模式)

所谓的代理&#xff0c;就是一个人或者一个机构代替另一个人或者另一个机构去做一些事情&#xff08;类似于中介或者代理商&#xff09;。 代理的种类 远程代理&#xff1a;为一个位于不同的地址空间的对象提供一个局域代表对象。 虚拟代理&#xff1a;根据需要创建一个资源消…

【LeetCode: 590. N 叉树的后序遍历 + DFS】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

C#使用 AutoUpdater.NET 实现程序自动更新

写在前面 开发桌面应用程序的时候&#xff0c;经常会因为新增功能需求或修复已知问题&#xff0c;要求客户更新应用程序&#xff0c;为了更好的服务客户&#xff0c;通常会在程序启动时判断版本变更情况&#xff0c;如发现新版本则自动弹出更新对话框&#xff0c;提醒客户更新…

k8s学习(RKE+k8s+rancher2.x)成长系列之简配版环境搭建(四)之Helm及cert-manager安装

安装Helm(三台都安装) 下载helm安装包并加入执行目录 tar zxf helm-v3.2.4-linux-amd64.tar.gz cd linux-amd64 cp helm /usr/bin/ helm version添加rancher稳定版仓库(三台都安装) helm repo add rancher-stable http://rancher-mirror.oss-cn-beijing.aliyuncs.com/serve…

c#程序应用程序设置文件Settings.settings详解

https://blog.csdn.net/wqq1027/article/details/84873014 应用程序设置 应用程序设置使您能够动态存储和检索应用程序的属性设置和其他信息。 还使您能够维护客户端计算机上的自定义应用程序和用户首选项。 通常这些数据&#xff08;如连接字符串&#xff09;对于运行应用程序…

RichAF 中文版(下)

原文&#xff1a;Rich AF : The Winning Money Mindset That Will Change Your Life 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 五、我出生时不是富人&#xff0c;但我的孩子会是 投资部分 当涉及投资时&#xff0c;我有三个关于致富的真相要分享&#xff1a; …