蓝桥杯 历届试题 九宫重排 (广搜)

通达信K线主图指标公式实战:如何用颜色标记快速识别涨停与炸板信号 本文详细介绍了如何利用通达信K线主图指标公式,通过颜色标记快速识别涨停与炸板等关键信号。通过实战拆解公式源码,手把手教您构建直观的“视觉交易系统”,将复杂的K线形态转化为醒目的颜色信号,帮助投资者高效聚焦机会与风险,提升技术分析效率。 阅读详情

历届试题 九宫重排  
时间限制:1.0s   内存限制:256.0MB
      
问题描述
  如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着。与空格子相邻的格子中的卡片可以移动到空格中。经过若干次移动,可以形成第二个图所示的局面。

  我们把第一个图的局面记为:12345678.
  把第二个图的局面记为:123.46758
  显然是按从上到下,从左到右的顺序记录数字,空格记为句点。
  本题目的任务是已知九宫的初态和终态,求最少经过多少步的移动可以到达。如果无论多少步都无法到达,则输出-1。
输入格式
  输入第一行包含九宫的初态,第二行包含九宫的终态。
输出格式
  输出最少的步数,如果不存在方案,则输出-1。
样例输入
12345678.
123.46758
样例输出
3
样例输入
13524678.
46758123.
样例输出
22

主要是标记剪枝,我用的set,不过听学长说可以用康托展开,可是康托展开好难。。

写得挺蠢的也过了,蓝桥数据应该挺水的吧。。


#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <set>
using namespace std;
char map1[5][5], map2[5][5];
int b1x, b1y;
struct node {
	int x, y, step;
	char m[5][5];
};
int dir[4][2] = {0, 1, 1, 0, 0, -1, -1, 0};
set<string> s;
int bfs() {
	queue<node> q;
	node now, next;
	now.x = b1x, now.y = b1y, now.step = 0;
	memcpy(now.m, map1, sizeof(map1));
	char tstr[10];
	int i, j, k = 0;
	for(i = 1; i <= 3; i++) {
		for(j = 1; j <= 3; j++) {
			tstr[k++] = map1[i][j];
		}
	}
	tstr[k] = 0;
	string str(tstr);  //字符数组转string 
	s.insert(str);
	q.push(now);
	while(!q.empty()) {
		now = q.front();
		q.pop();
		int flag = 0;
		for(i = 1; i <= 3; i++) {  //退出条件 
			for(j = 1; j <= 3; j++) {
				if(now.m[i][j] != map2[i][j]) {
					flag = 1;
					break;
				}
			}
			if(flag) break;
		}
		if(i == 4) return now.step;
		for(i = 0; i < 4; i++) {
			next.x = now.x + dir[i][0];
			next.y = now.y + dir[i][1];
			next.step = now.step + 1;
			if(next.x < 1 || next.x > 3 || next.y < 1 || next.y > 3) continue;
			memcpy(next.m, now.m, sizeof(now.m));
			next.m[now.x][now.y] = next.m[next.x][next.y];
			next.m[next.x][next.y] = '.';
			int i, j, k = 0;
			for(i = 1; i <= 3; i++) {
				for(j = 1; j <= 3; j++) {
					tstr[k++] = next.m[i][j];
				}
			}
			string str1(tstr);
			if(s.count(str1) == 1) continue;
			else s.insert(str1);
			q.push(next);
		}
	}
	return -1; 
}
int main() {
	//freopen("input.txt", "r", stdin);
	//freopen("output.txt", "w", stdout);
	int i, j;
	for(i = 1; i <= 3; i++) {
		for(j = 1; j <= 3; j++) {
			scanf("%c", &map1[i][j]);
			if(map1[i][j] == '.') b1x = i, b1y = j; 
		}
	}
	getchar();
	for(i = 1; i <= 3; i++) {
		for(j = 1; j <= 3; j++) {
			scanf("%c", &map2[i][j]);
		}
	}
	getchar();
	cout << bfs() << endl;
	return 0;
}


基于ESP32 蓝牙游戏手柄设计 介绍使用 ESP32 并通过 BLE 通信的 设计手持游戏手柄,包含原理图与代码 阅读详情

相关推荐

动态规划与状态压缩:从TSP问题理解算法优化核心思想

动态规划是一种通过将复杂问题分解为重叠子问题并存储中间结果来避免重复计算的核心算法思想,广泛应用于路径优化、资源分配和序列决策等场景。其核心原理在于最优子结构和无后效性,通过状态设计和状态转移方程,将指数级复杂度问题转化为多项式时间可解。在工程实践中,状态压缩技术常被用于高效表示集合状态,例如使用二进制位运算来操作城市访问集合,从而大幅提升算法效率。本文以经典的旅行商问题(TSP)为例,深入剖析如何运用动态规划与状态压缩技术,将暴力穷举的指数级复杂度优化为可管理的计算量,为解决组合优化问题提供了重要的方法论

weixin_32075843的博客 365

蓝桥杯——一篇搞懂广度优先搜索(BFS)

大家好,我是璐画 📒博客主页:璐画的个人主页 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📌本文由璐画原创,优快云首发! 📆首发时间:🌴2022年3月21日🌴 ✉️坚持下去的,都是因为热爱吧! 💭参考书籍:📚《labuladong的算法小抄》 💬参考在线编程网站:🌐牛客网🌐力扣 🍭作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢! 特别声明:本文我是学习过labuladong大佬的书然后总结出来的文章,这位大佬在csdn上好像没有账号,想学习的小伙伴可以买大佬那本《labuladong的算法小抄》

m0_47963315的博客 5063

晶晨S905L3S/S905L3SB芯片刷机实战:BL加载工具与线刷固件全解析

本文针对晶晨S905L3S/S905L3SB芯片电视盒子刷机时常见的2%失败问题,提供了两种核心解决方案。一是使用已集成特殊通信协议的专用版USB Burning Tool(如V2.2.5/V2.2.7),二是采用旧版工具配合独立的BootLoader加载工具。文章详细解析了两种方案的原理、操作步骤、固件选择及常见问题排查,旨在帮助用户成功完成刷机,让老旧设备焕发新生。

weixin_29238147的博客 1109

【蓝桥杯】九宫重排(bfs模板题)

题目描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着。与空格子相邻的格子中的卡片可以移动到空格中。经过若干次移动,可以形成第二个图所示的局面。 我们把第一个图的局面记为:12345678. 把第二个图的局面记为:123.46758 显然是按从上到下,从左到右的顺序记录数字,空格记为句点。 本题目的任务是已知九宫的初态和终态,求最少经过多少步的移动可以到达。如果无论多...

一只蜗牛 616

基于Simulink的输入-输出线性化精确转矩控制

本文详细介绍了基于Simulink的永磁同步电机(PMSM)输入-输出线性化(IOL)精确转矩控制方法。针对传统解耦控制在非线性转矩特性下的局限性,通过建立PMSM非线性状态空间模型,设计IOL控制器将系统转化为线性输入-输出映射。文章包含系统原理推导、Simulink建模步骤、参数整定方法和仿真结果分析,验证了IOL在高动态、宽速域工况下的优越性能(转矩误差降低90%)。最后提出了工程实现要点和扩展应用方向,为开发高精度电机驱动系统提供了实用指导。

xiaoheshang_123的博客 304

交货单冲销发货过账的正确姿势:用 VL09 与 ABAP 批量反冲 Goods Issue

摘要 本文详细解析了SAP系统中VL09事务码的技术实现与业务应用。VL09用于反冲发货的货物移动,通过标准冲销路径(移动类型602冲销601)确保单据链路一致、状态机正确回退和业务规则生效。文章对比了经典VL09与Fiori应用在不同SAP产品形态中的位置,并针对STO场景提供了ME23N验证方法。核心内容包括WS_REVERSE_GOODS_ISSUE函数模块的调用要点、必须COMMIT的原因(SAP LUW机制),以及处理Handling Unit等限制条件的注意事项。最后给出了将VL09工程化的项目

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 591

如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着。与空格子相邻的格子中的卡片可以移动到空格中。

如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着。与空格子相邻的格子中的卡片可以移动到空格中。

qq_27047075的博客 670

环境仿真软件:EcoPath with Ecosim_(4).Ecosim模型动态模拟

Ecosim 是 EcoPath with Ecosim (EwE) 软件中的动态模拟模块,用于模拟生态系统中各个组分的动态变化过程。Ecosim 模型通过时间序列数据和动态参数,可以预测生态系统在不同管理措施下的响应。时间序列数据的输入:用户可以输入历史数据,如捕捞努力、生物量、环境因子等,用于校准模型。动态参数的设置:用户可以设置被捕食率、生长率、捕捞死亡率等动态参数,以反映生态系统的变化。模拟结果的分析。

kkchenjj的博客 893

【蓝桥杯】九宫重排(BFS+康拓展开)

问题描述   如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着。与空格子相邻的格子中的卡片可以移动到空格中。经过若干次移动,可以形成第二个图所示的局面。      我们把第一个图的局面记为:12345678.   把第二个图的局面记为:123.46758   显然是按从上到下,从左到右的顺序记录数字,空格记为句点。   本题目的任务是已知九宫的初态和终态,求最少经过多少步的移动...

学无止境 526

Kafka 性能优化与常见问题排查

Kafka 的高性能依赖于合理的集群设计、参数优化与高效的监控体系。生产环境中,应重点关注I/O 瓶颈、分区规划、Producer/Consumer 参数调优,并通过监控与排查手段快速定位问题,从而保障 Kafka 在实时场景下的稳定运行。

X2829352498的博客 235

【保姆级教程】基于UNet++&MobileNetv2的语义分割模型从训练到RK3588部署:让边缘AI落地效率提升300%

通过SMP库一键构建encoder_name="mobilenet_v2", # 选择MobileNetv2作为骨干encoder_weights="imagenet", # 加载预训练权重加速收敛in_channels=3, # 输入图像通道数(RGB)classes=29, # Cityscapes数据集类别数activation=None # 输出无激活,便于后续损失计算本教程从“模型设计-训练-转换-边缘部署”全链路拆解了。

FJN110的博客 211

【蓝桥杯】历届试题 九宫重排(广度优先搜索bfs)

如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着。与空格子相邻的格子中的卡片可以移动到空格中。经过若干次移动,可以形成第二个图所示的局面。我们把第一个图的局面记为:12345678. 把第二个图的局面记为:123.46758 显然是按从上到下,从左到右的顺序记录数字,空格记为句点。 本题目的任务是已知九宫的初态和终态,求最少经过多少步的移动可以到达。 如果无论多少步都无法到达,则输出 -1。

酱懵静的博客 1719

在 Windows 11 下运行 OminiParse V2,详细教程【含问题解决细节】

OmniParser V2 是微软推出的 GUI 智能体解析工具,可将屏幕截图转换为结构化元素,帮助 LLM 理解和操作界面。它在检测小图标和推理速度上显著提升,延迟降低 60%,并支持多种 LLM。

简简单单Onlinezuozuo 1092

蓝桥杯 历届试题 九宫重排 经典八数码问题 A*算法+康托展开

问题描述   如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着。与空格子相邻的格子中的卡片可以移动到空格中。经过若干次移动,可以形成第二个图所示的局面。   我们把第一个图的局面记为:12345678.   把第二个图的局面记为:123.46758   显然是按从上到下,从左到右的顺序记录数字,空格记为句点。   本题目的任务是已知九宫的初态和终态,求最少经过多少步的移动可以到达。如果无论多少步都无法到达,则输出-1。 输入格式   输入第一行包含九宫的初态,第二行包含九宫的终态。 输

Lionel 4915

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

蓝桥杯 历届试题 九宫重排 java

蓝桥杯试题 九宫重排 本人太蠢了,不会写这个题目,借鉴了博主南墙的写法,由于其中使用的一些本人不太熟悉的内容,故此贴上来,为防止以后遇到类似问题,好再做翻阅,代码中做了更详细的注释,接下来上代码: package 历届试题; import java.util.ArrayList; import java.util.HashSet; import java.util.Scanner; publ...

WillXinlin的博客 384

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

bfs | [蓝桥杯][历届试题]九宫重排

[蓝桥杯][历届试题]九宫重排 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着。与空格子相邻的格子中的卡片可以移动到空格中。经过若干次移动,可以形成第二个图所示的局面。 我们把第一个图的局面记为:12345678. 把第二个图的局面记为:123.46758 显然是按从上到下,从左到右的顺序记录数字,空格记为句点。 本题目的任务是已知九宫的初态和终态,求最少经过多少步的移...

cp0328的博客 3489

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

蓝桥杯历届试题代码参考

蓝桥杯历届试题代码参考历届试题核桃的数量打印十字图带分数剪格子错误票据翻硬币连号区间数买不到的数目大臣的旅费幸运数横向打印二叉树危险系数网络寻路高僧斗法格子刷油漆农场阳光约数倍数选卡片车轮轴迹九宫重排公式求值回文数字国王的烦恼数字游戏邮局城市建设最大子阵蚂蚁感冒地宫取宝斐波那契波动数列小朋友排队分糖果兰顿蚂蚁矩阵翻硬币正则问题包子凑数分巧克力油漆面积日期问题k倍区间Excel地址九宫幻方拉马车青蛙跳杯子图形排版填字母游戏区间移位数组操作发现环对局匹配观光铁路小数第n位分考场合根植物小计算器 历届试题 核桃的

xiake5018的博客 1972

蓝桥杯历届试题-九宫重排 + map学习笔记

map是STL(中文标准模板库)的一个关联容器。可以将任何基本类型映射到任何基本类型。如int array[100]事实上就是定义了一个int型到int型的映射。map提供一对一的数据处理,key-value键值对,其类型可以自己定义,第一个称为关键字,第二个为关键字的值map内部是自动排序的。

weixin_64301936的博客 688

Java实现 蓝桥杯 历届试题 九宫重排

问题描述   如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着。与空格子相邻的格子中的卡片可以移动到空格中。经过若干次移动,可以形成第二个图所示的局面。 我们把第一个图的局面记为:12345678.   把第二个图的局面记为:123.46758   显然是按从上到下,从左到右的顺序记录数字,空格记为句点。   本题目的任务是已知九宫的初态和终态,求最少经过多少步的移动可以到达。...

南 墙 1万+

题目 1426: [蓝桥杯][历届试题]九宫重排

题目 1426: [蓝桥杯][历届试题]九宫重排 时间限制: 1Sec 内存限制: 128MB 提交: 2574 解决: 767 题目描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着。与空格子相邻的格子中的卡片可以移动到空格中。经过若干次移动,可以形成第二个图所示的局面。 我们把第一个图的局面记为:12345678. 把第二个图的局面记为:123.46758 显然是按从上到下,从左到右的顺序记录数字,空格记为句点。 本题目的任务是已知九宫的初态和终态,求最少经过多少步的移动可

韩绘锦的博客 354

[蓝桥杯][历届试题]九宫重排(BFS+哈希)

[蓝桥杯][历届试题]九宫重排 时间限制: 1Sec 内存限制: 128MB 提交: 586 解决: 126 题目描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着。与空格子相邻的格子中的卡片可以移动到空格中。经过若干次移动,可以形成第二个图所示的局面。 我们把第一个图的局面记为:12345678. 把第二个图的局面记为:123.46758...

Five—菜鸟级的博客 1807

蓝桥杯历届试题oj

历届试题 蓝桥杯历届试题自我编辑解析 试题编号 试题名称 关键字 更新时间 试题状态 参考答案 PREV-55 小计算器 2017-12-18 已打开 PREV-54 合根植物 2017-12-18 已打开 PREV-53 分考场 2017-...

qq_42794545的博客 2851

蓝桥杯题库 历届试题部分(C++、Java)代码实现(16-30)

文章目录五、历届试题PREV-16 农场阳光PREV-17 约数倍数选卡片PREV-18 车轮轴迹PREV-19 九宫重排PREV-20 公式求值PREV-21 回文数字PREV-22 国王的烦恼PREV-23 数字游戏PREV-24 邮局PREV-25 城市建设PREV-26 最大子阵PREV-27 蚂蚁感冒PREV-28 地宫取宝PREV-29 斐波那契PREV-30 波动数列 将定期更新蓝桥...

薛崇祥的博客 1568

[蓝桥杯][历届试题]九宫重排

题目 题目链接 题解 BFS。 先讲标准做法,对应代码2: 用map类型的vis记录某个状态是否经历过;什么是状态,状态就是比如12345678.或123.46758,这些string型的数值就对应着一个个状态,即网格中数字和空格的不同排法。 pair 知识点: 队列中结点的类型为pair<string, int>,pair<string, int>相当于一个结构体里面有两个元素,一个是string类型,另一个是int类型,分别记录状态和到达此状态的步数。pair的第一个元素通过

LJR的博客 261

蓝桥杯历届试题-九宫重排

如下图的九宫格中,放着 1 ~ 8 的数字卡片,还有一个格子空着。与空格子相邻的格子中的卡片可以移动到空格中。经过若干次移动,可以形成图 2 所示的局面。题目的任务是已知九宫的初态和终态,求最少经过多少步的移动可以到达。如果无论多少步都无法到达,则输出 -1。显然是按从上到下,从左到右的顺序记录数字,空格记为句点。输入第一行包含九宫的初态,第二行包含九宫的终态。输出最少的步数,如果不存在方案,则输出 -1。我们把上图的局面记为:12345678.把下图的局面记为:123.46758。

weixin_74189414的博客 551

历届试题 九宫重排

历届试题 九宫重排 学习大佬博客passerbyOrz 法一:双向bfs+map去重 100 用时 78ms 蓝桥杯 #include<iostream> #include<cstdio> #include<queue> #include<string> #include<map> using namespace std; const...

GU 262
上一篇: HDU 3625 Examining the Rooms (第一类斯特灵数,组合数学)
下一篇: 蓝桥杯 历届试题 小朋友排队(归并,树状数组求逆序对数)
Strokess
博客等级 码龄11年 62粉丝 206原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值