搜索算法(算法竞赛、蓝桥杯)--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 消费者可靠性 消费者确认机制 失败重试机制 失…

深度学习之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;非传统绕线&…

【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 …

【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…

RichAF 中文版(下)

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

mysql同类型的多行变成一行value1和value2不同的列

关键字 row_number() over (partition by) 例如&#xff0c;下面的数据&#xff0c; 这是按照name分组后&#xff0c;展示property值。 我们想得到这样的值; 第一步&#xff1a;将每一组的property标上序号 select name,property,row_number() over (partition by name order…

Django学习笔记-创建第一个django项目

1.创建一个虚拟环境的python项目 2.点击解释器设置 3.安装django包 4.终端选择Command Prompt 5.创建django项目运行django-admin startproject demo01(自命名) 6.修改连接数据库为mysql 7.修改语言(中国汉语)和时区(亚洲上海)USE_TZ改为False,否则时区不生效 8.修改TEMPLA…

并发List、Set、ConcurrentHashMap底层原理

并发List、Set、ConcurrentHashMap底层原理 ArrayList: List特点&#xff1a;元素有放入顺序&#xff0c;元素可重复 存储结构&#xff1a;底层采用数组来实现 public class ArrayList<E> extends AbstractList<E>implements List<E>, RandomAccess, Clon…

从入门到精通:AI绘画与修图实战指南

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 在这篇文章中&#xff0c;我们将深入探讨如何利…