备战蓝桥杯---搜索(应用入门)
话不多说,直接看题:


显然,我们可以用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;}
}
相关文章:
备战蓝桥杯---搜索(应用入门)
话不多说,直接看题: 显然,我们可以用BFS,其中,对于判重操作,我们可以把这矩阵化成字符串的形式再用map去存,用a数组去重现字符串(相当于map映射的反向操作)。移动空格先找…...
自学PyQt6杂记索引
文章目录 📖 介绍 📖🏡 安装 🏡📒 使用 📒📝 QtCore📝 QtGui📝 QtWidgets📝 QToolTip📝 信号和槽📝 QtDBus📝 QtNetwork📝 QtHelp📝 QtXml📝 QtSvg...
【Docker】Docker Registry(镜像仓库)
文章目录 一、什么是 Docker Registry二、镜像仓库分类三、镜像仓库工作机制四、常用的镜像仓库五、常用命令镜像仓库命令镜像命令(部分)容器命令(部分) 六、docker镜像仓库实战综合实战一:搭建一个 nginx 服务综合实战二:Docker hub上创建自己私有仓库综…...
TensorFlow2实战-系列教程14:Resnet实战2
🧡💛💚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中,undefined 是一种基本数据类型,它表示一个变量已经声明但未定义(即没有赋值)或者一个对象属性不存在。 …...
《区块链简易速速上手小册》第6章:区块链在金融服务领域的应用(2024 最新版)
文章目录 6.1 金融服务中的区块链6.1.1 金融服务中区块链的基础6.1.2 主要案例:跨境支付6.1.3 拓展案例 1:去中心化金融(DeFi)6.1.4 拓展案例 2:代币化资产 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内容四、总结 一、分离头指针 正常情况下,在通过git checkout命令切换分支时,在命令后面跟着的是分支名(例如master、temp等)或分支名对应commit的哈希值。 非正常情况下&…...
【Tomcat与网络9】提高Tomcat启动速度的八大措施
本文我们来看一下如何对Tomcat进行调优,我们对于Tomcat的调优主要集中在三个方面:提高启动速度、提高系统稳定性和提高并发能力,后两者很多时候是相辅相成的,我们放在一起看。 Tomcat现在一般都嵌入在SpringBoot里,因…...
蓝桥杯嵌入式第七届真题(完成) STM32G431
蓝桥杯嵌入式第七届真题(完成) STM32G431 题目 相关文件 main.c /* USER CODE BEGIN Header */ /********************************************************************************* file : main.c* brief : Main program body**********************…...
如何降低视频RTSP解码延迟
降低RTSP(Real-Time Streaming Protocol)视频流的解码延迟涉及到网络传输和解码处理的优化。以下是一些常见的方法: 选择低延迟的解码器:使用专为低延迟优化的解码器,例如一些定制的H.264或H.265解码器。 优化解码器设…...
【Golang】自定义logrus日志保存为日志文件
背景 为了方便查看日志,项目中需要把日志保存到对应的日志文件中,所以需要当前的配置,以使得日志能够保存到对应的日志文件中。 代码 import ("github.com/orandin/lumberjackrus""github.com/sirupsen/logrus" )func …...
【大厂AI课学习笔记】1.4 算法的进步(4)关于李飞飞团队的ImageNet
第一个图像数据库是ImageNet,由斯坦福大学的计算机科学家李飞飞推出。ImageNet是一个大型的可视化数据库,旨在推动计算机视觉领域的研究。这个数据库包含了数以百万计的手工标记的图像,涵盖了数千个不同的类别。 基于ImageNet数据库…...
【Linux笔记】缓冲区的概念到标准库的模拟实现
一、缓冲区 “缓冲区”这个概念相信大家或多或少都听说过,大家其实在C语言阶段就已经接触到“缓冲区”这个东西,但是相信大家在C语言阶段并没有真正弄懂缓冲区到底是个什么东西,也相信大家在C语言阶段也因为缓冲区的问题写出过各种bug。 其…...
【前端收藏】前端小作文-前端八股文知识总结(超万字超详细)持续更新
有了这个八股文不仅对你基础知识的巩固,不管你是几年老前端程序员,还是要去面试的,文章覆盖了前端常用及不常用的方方面面,都是前端日后能用上的,对你的前端知识有总结意义,看完后,懂的不懂的都…...
GNSS模块的惯导技术:引领定位科技的前沿
全球导航卫星系统(GNSS)模块的惯导技术是一项颇具前瞻性的科技,它结合了全球定位系统和惯性导航技术,为各个领域的定位需求提供了更为精准和可靠的解决方案。本文将深入探讨GNSS模块的惯导技术,以及它如何在多个领域中…...
Flutter 和 Android原生(Activity、Fragment)相互跳转、传参
前言 本文主要讲解 Flutter 和 Android原生之间,页面相互跳转、传参, 但其中用到了两端相互通信的知识,非常建议先看完这篇 讲解通信的文章: Flutter 与 Android原生 相互通信:BasicMessageChannel、MethodChannel、…...
Kubernetes基础(十一)-CNI网络插件用法和对比
1 CNI概述 1.1 什么是CNI? Kubernetes 本身并没有实现自己的容器网络,而是借助 CNI 标准,通过插件化的方式来集成各种网络插件,实现集群内部网络相互通信。 CNI(Container Network Interface,容器网络的…...
yo!这里是单例模式相关介绍
目录 前言 特殊类设计 只能在堆上创建对象的类 1.方法一(构造函数下手) 2.方法二(析构函数下手) 只能在栈上创建对象的类 单例模式 饿汉模式实现 懒汉模式实现 后记 前言 在面向找工作学习c的过程中,除了基本…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...
毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
统计按位或能得到最大值的子集数目
我们先来看题目描述: 给你一个整数数组 nums ,请你找出 nums 子集 按位或 可能得到的 最大值 ,并返回按位或能得到最大值的 不同非空子集的数目 。 如果数组 a 可以由数组 b 删除一些元素(或不删除)得到,…...
