当前位置: 首页 > news >正文

备战蓝桥杯---搜索(应用入门)

话不多说,直接看题:

显然,我们可以用BFS,其中,对于判重操作,我们可以把这矩阵化成字符串的形式再用map去存,用a数组去重现字符串(相当于map映射的反向操作)。移动空格先找到x的位置再推算出在矩阵里的位置进行移动即可。

至于如何回溯,我们创造last数组来看它上一个是谁,用form数组记录变化的操作。

然后dfs回溯输出即可。

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
#define N 363000
int last[N],cnt;
int form[N];
char dd;
map<string,int> mp;
string a[N],s1,s2="12345678x";
queue<int> q;
int dir[4][2]={{0,1},{0,-1},{-1,0},{1,0}};
char ck[4]={'r','l','u','d'};
int bfs(string s1,string s2){mp[s1]=1;cnt=1;last[cnt]=0;a[cnt]=s1;q.push(cnt);while(!q.empty()){int tmp=q.front();q.pop();int tt=a[tmp].find('x');int x=tt/3,y=tt%3;for(int i=0;i<4;i++){string nxt=a[tmp];int x1=x+dir[i][0];int y1=y+dir[i][1];if(x1<0||x1>=3||y1<0||y1>=3) continue;swap(nxt[tt],nxt[x1*3+y1]);if(mp.find(nxt)!=mp.end()) continue;mp[nxt]=++cnt;last[cnt]=tmp;form[cnt]=i;a[cnt]=nxt;q.push(cnt);if(nxt==s2) return 1;}}return 0;
}
void dfs(int cnt){if(cnt==1) return;dfs(last[cnt]);cout<<ck[form[cnt]];
}
int main(){for(int i=1;i<=9;i++){cin>>dd;s1+=dd;}if(bfs(s1,s2)==0) cout<<"unsolvable";else dfs(mp[s2]);
}

注意:方向数组中(1,0)是down(因为这wa了好久)

下面来一道刚刚比赛过的题:

这名字显然是个坑,看到数据范围就知道要暴力了3^10是可以接受的,于是我们用dfs写

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
int n,m,t,a[20],min1=20;
struct node{int u,v;
}q[20];
void deal(){int cnt=1;for(int i=2;i<=n;i++){if(a[i]>a[1]) cnt++;}min1=min(min1,cnt);
}
void dfs(int x){if(x>m){deal();return ;}for(int i=1;i<=3;i++){if(i==1){a[q[x].u]+=3;dfs(x+1);a[q[x].u]-=3;}else if(i==2){a[q[x].v]+=3;dfs(x+1);a[q[x].v]-=3;}else{a[q[x].u]+=1;a[q[x].v]+=1;dfs(x+1);a[q[x].u]-=1;a[q[x].v]-=1;}}return ;
}
int main(){cin>>t;while(t--){cin>>n>>m;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=m;i++) cin>>q[i].u>>q[i].v;dfs(1);cout<<min1<<endl;min1=20;}
}

相关文章:

备战蓝桥杯---搜索(应用入门)

话不多说&#xff0c;直接看题&#xff1a; 显然&#xff0c;我们可以用BFS&#xff0c;其中&#xff0c;对于判重操作&#xff0c;我们可以把这矩阵化成字符串的形式再用map去存&#xff0c;用a数组去重现字符串&#xff08;相当于map映射的反向操作&#xff09;。移动空格先找…...

自学PyQt6杂记索引

文章目录 📖 介绍 📖🏡 安装 🏡📒 使用 📒📝 QtCore📝 QtGui📝 QtWidgets📝 QToolTip📝 信号和槽📝 QtDBus📝 QtNetwork📝 QtHelp📝 QtXml📝 QtSvg...

【Docker】Docker Registry(镜像仓库)

文章目录 一、什么是 Docker Registry二、镜像仓库分类三、镜像仓库工作机制四、常用的镜像仓库五、常用命令镜像仓库命令镜像命令(部分)容器命令(部分) 六、docker镜像仓库实战综合实战一&#xff1a;搭建一个 nginx 服务综合实战二&#xff1a;Docker hub上创建自己私有仓库综…...

TensorFlow2实战-系列教程14:Resnet实战2

&#x1f9e1;&#x1f49b;&#x1f49a;TensorFlow2实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Jupyter Notebook中进行 本篇文章配套的代码资源已经上传 Resnet实战1 Resnet实战2 Resnet实战3 4、训练脚本train.py解读------创建模型 def …...

编程笔记 html5cssjs 069 JavaScript Undefined数据类型

编程笔记 html5&css&js 069 JavaScript Undefined数据类型 一、undefined数据类型二、类型运算小结 在JavaScript中&#xff0c;undefined 是一种基本数据类型&#xff0c;它表示一个变量已经声明但未定义&#xff08;即没有赋值&#xff09;或者一个对象属性不存在。 …...

《区块链简易速速上手小册》第6章:区块链在金融服务领域的应用(2024 最新版)

文章目录 6.1 金融服务中的区块链6.1.1 金融服务中区块链的基础6.1.2 主要案例&#xff1a;跨境支付6.1.3 拓展案例 1&#xff1a;去中心化金融&#xff08;DeFi&#xff09;6.1.4 拓展案例 2&#xff1a;代币化资产 6.2 区块链在支付系统中的作用6.2.1 支付系统中区块链的基础…...

【消息队列】kafka整理

kafka整理 整理kafka基本知识供回顾。...

python--杂识--16--代理密码中包含特殊字符

1 安装nginx 2 centos环境安装 yum install httpd-tools3 nginx.conf /etc/nginx/conf/nginx.conf #user nobody; worker_processes 1;#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;#pid logs/nginx.pid;e…...

【Git】05 分离头指针

文章目录 一、分离头指针二、创建分支三、比较commit内容四、总结 一、分离头指针 正常情况下&#xff0c;在通过git checkout命令切换分支时&#xff0c;在命令后面跟着的是分支名&#xff08;例如master、temp等&#xff09;或分支名对应commit的哈希值。 非正常情况下&…...

【Tomcat与网络9】提高Tomcat启动速度的八大措施

本文我们来看一下如何对Tomcat进行调优&#xff0c;我们对于Tomcat的调优主要集中在三个方面&#xff1a;提高启动速度、提高系统稳定性和提高并发能力&#xff0c;后两者很多时候是相辅相成的&#xff0c;我们放在一起看。 Tomcat现在一般都嵌入在SpringBoot里&#xff0c;因…...

蓝桥杯嵌入式第七届真题(完成) STM32G431

蓝桥杯嵌入式第七届真题(完成) STM32G431 题目 相关文件 main.c /* USER CODE BEGIN Header */ /********************************************************************************* file : main.c* brief : Main program body**********************…...

如何降低视频RTSP解码延迟

降低RTSP&#xff08;Real-Time Streaming Protocol&#xff09;视频流的解码延迟涉及到网络传输和解码处理的优化。以下是一些常见的方法&#xff1a; 选择低延迟的解码器&#xff1a;使用专为低延迟优化的解码器&#xff0c;例如一些定制的H.264或H.265解码器。 优化解码器设…...

【Golang】自定义logrus日志保存为日志文件

背景 为了方便查看日志&#xff0c;项目中需要把日志保存到对应的日志文件中&#xff0c;所以需要当前的配置&#xff0c;以使得日志能够保存到对应的日志文件中。 代码 import ("github.com/orandin/lumberjackrus""github.com/sirupsen/logrus" )func …...

【大厂AI课学习笔记】1.4 算法的进步(4)关于李飞飞团队的ImageNet

第一个图像数据库是ImageNet&#xff0c;由斯坦福大学的计算机科学家李飞飞推出。ImageNet是一个大型的可视化数据库&#xff0c;旨在推动计算机视觉领域的研究。这个数据库包含了数以百万计的手工标记的图像&#xff0c;涵盖了数千个不同的类别。 基于ImageNet数据库&#xf…...

【Linux笔记】缓冲区的概念到标准库的模拟实现

一、缓冲区 “缓冲区”这个概念相信大家或多或少都听说过&#xff0c;大家其实在C语言阶段就已经接触到“缓冲区”这个东西&#xff0c;但是相信大家在C语言阶段并没有真正弄懂缓冲区到底是个什么东西&#xff0c;也相信大家在C语言阶段也因为缓冲区的问题写出过各种bug。 其…...

【前端收藏】前端小作文-前端八股文知识总结(超万字超详细)持续更新

有了这个八股文不仅对你基础知识的巩固&#xff0c;不管你是几年老前端程序员&#xff0c;还是要去面试的&#xff0c;文章覆盖了前端常用及不常用的方方面面&#xff0c;都是前端日后能用上的&#xff0c;对你的前端知识有总结意义&#xff0c;看完后&#xff0c;懂的不懂的都…...

GNSS模块的惯导技术:引领定位科技的前沿

全球导航卫星系统&#xff08;GNSS&#xff09;模块的惯导技术是一项颇具前瞻性的科技&#xff0c;它结合了全球定位系统和惯性导航技术&#xff0c;为各个领域的定位需求提供了更为精准和可靠的解决方案。本文将深入探讨GNSS模块的惯导技术&#xff0c;以及它如何在多个领域中…...

Flutter 和 Android原生(Activity、Fragment)相互跳转、传参

前言 本文主要讲解 Flutter 和 Android原生之间&#xff0c;页面相互跳转、传参&#xff0c; 但其中用到了两端相互通信的知识&#xff0c;非常建议先看完这篇 讲解通信的文章&#xff1a; Flutter 与 Android原生 相互通信&#xff1a;BasicMessageChannel、MethodChannel、…...

Kubernetes基础(十一)-CNI网络插件用法和对比

1 CNI概述 1.1 什么是CNI&#xff1f; Kubernetes 本身并没有实现自己的容器网络&#xff0c;而是借助 CNI 标准&#xff0c;通过插件化的方式来集成各种网络插件&#xff0c;实现集群内部网络相互通信。 CNI&#xff08;Container Network Interface&#xff0c;容器网络的…...

yo!这里是单例模式相关介绍

目录 前言 特殊类设计 只能在堆上创建对象的类 1.方法一&#xff08;构造函数下手&#xff09; 2.方法二&#xff08;析构函数下手&#xff09; 只能在栈上创建对象的类 单例模式 饿汉模式实现 懒汉模式实现 后记 前言 在面向找工作学习c的过程中&#xff0c;除了基本…...

UE5 开发神器:蓝图节点预设插件 — 支持多节点打组 / 快捷键 / 拖拽插入 / 材质编辑器

插件名称&#xff1a;UPNodePresets 插件包含以下功能 Action Palette 搜索&#xff1a;右键空白处搜索预设名称&#xff0c;回车即插入快捷键插入&#xff1a;按住数字键 0~9 鼠标左键点击任意位置&#xff0c;瞬间插入&#xff08;Blueprint / Material 独立绑定&#xff…...

从零到精通的Android Kotlin实战学习旅程:50个项目带你掌握移动开发核心技能

从零到精通的Android Kotlin实战学习旅程&#xff1a;50个项目带你掌握移动开发核心技能 【免费下载链接】50-android-kotlin-projects-in-100-days My everyday Android practice demos with Kotlin in 100 days. 项目地址: https://gitcode.com/gh_mirrors/50/50-android-k…...

终极无损音频压缩指南:FLAC 1.5.0完整教程与实战应用

终极无损音频压缩指南&#xff1a;FLAC 1.5.0完整教程与实战应用 【免费下载链接】flac Free Lossless Audio Codec 项目地址: https://gitcode.com/gh_mirrors/fl/flac 在数字音频的世界中&#xff0c;存储空间与音质质量往往难以兼得&#xff0c;但FLAC&#xff08;Fr…...

一键永久珍藏QQ空间回忆:GetQzonehistory完整备份指南

一键永久珍藏QQ空间回忆&#xff1a;GetQzonehistory完整备份指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否担心QQ空间里的珍贵回忆会随着时间流逝而消失&#xff1f;那些记…...

告别编译噩梦:用VSCode + CMake Tools 在Windows上优雅地构建和调试ncnn项目

告别编译噩梦&#xff1a;用VSCode CMake Tools 在Windows上优雅地构建和调试ncnn项目 对于习惯使用轻量级现代编辑器的开发者来说&#xff0c;在Windows平台编译ncnn这类高性能神经网络框架往往意味着要在笨重的IDE和晦涩的命令行工具之间艰难抉择。本文将展示如何通过VSCode…...

提升编码效率新思路:快马ai工具链替代传统ide破解需求

作为一名前端开发者&#xff0c;我经常遇到重复造轮子的情况。每次新建项目都要从头搭建目录结构&#xff0c;反复写类似的表单验证逻辑&#xff0c;还要花大量时间调整CSS兼容性。最近发现InsCode(快马)平台的AI工具链&#xff0c;意外解决了这些痛点。 智能代码补全体验 传统…...

基于逻辑回归与XGBoost的冠心病风险预测模型比较研究——以UCI Heart Disease数据集为例

基于逻辑回归与XGBoost的冠心病风险预测模型比较研究——以UCI Heart Disease数据集为例 摘要 冠心病是当前全球范围内致死率最高的心血管疾病之一,早期准确识别高危人群对于降低发病率和死亡率具有重要意义。本研究以UCI Heart Disease数据集为基础,系统比较了逻辑回归与X…...

实战应用:基于快马平台构建项目级UI颜色规范管理工具

今天想和大家分享一个最近在项目中用到的实用工具——基于InsCode(快马)平台搭建的UI颜色规范管理系统。作为一个经常要和设计系统打交道的前端开发者&#xff0c;我发现在团队协作中&#xff0c;颜色代码的管理常常是个痛点&#xff0c;这次尝试用快马平台快速实现了一个解决方…...

AI识别人,是最落后的能力——真正的智能,不是“看见你是谁”,而是“知道你在哪里”

AI识别人&#xff0c;是最落后的能力——真正的智能&#xff0c;不是“看见你是谁”&#xff0c;而是“知道你在哪里”一、开头&#xff1a;行业正在集体卷错方向过去十年&#xff0c;AI行业一直在做一件事&#xff1a;&#x1f449; 更准确地“识别人”我们不断看到这些突破&a…...

实践之漏洞挖掘(弱口令)

前言&#xff1a;经过我的不懈努力&#xff0c;也是挖到了弱口令&#xff0c;嘻嘻&#xff0c;学校的&#xff0c;虽然没有泄露什么隐私&#xff0c;但是我交了要更新就是学校的漏洞&#xff0c;过不过都没关系&#xff0c;没过我下次就找有隐私的后台再交嘻嘻正题&#xff1a;…...