hdu1195 Open the Lock 广搜BFS 四维数组标记

无感FOC之高频注入法——永磁同步电机控制 1.摘要电机运行在低速或零速时,磁链产生的反电动势很微弱,可用信号的信噪比太低,因而难以从反电动势中提取转子的位置和速度信息。因而在电机处于低速或零速时,需要借助电机的凸极特性来获取转子的位置信息。内置式永磁同步电机或磁密较大的表贴式永磁同步电机具有这种凸极特性,可借助高频电压注入法获取转子位置。2.凸极特性凸极电机内部的气隙是不均匀的,d轴和q轴的有效气隙是不同的,通俗来说在凸极电机里,q轴电感往往大于d轴电感,而在大部分表贴式永磁同步电机,气隙分布相对均匀,q轴电感近似于d轴电感。凸极率常用q轴电感和d 阅读详情

Open the Lock

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 5732    Accepted Submission(s): 2540


Problem Description
Now an emergent task for you is to open a password lock. The password is consisted of four digits. Each digit is numbered from 1 to 9. 
Each time, you can add or minus 1 to any digit. When add 1 to '9', the digit will change to be '1' and when minus 1 to '1', the digit will change to be '9'. You can also exchange the digit with its neighbor. Each action will take one step.

Now your task is to use minimal steps to open the lock.

Note: The leftmost digit is not the neighbor of the rightmost digit.
 

Input
The input file begins with an integer T, indicating the number of test cases. 

Each test case begins with a four digit N, indicating the initial state of the password lock. Then followed a line with anotther four dight M, indicating the password which can open the lock. There is one blank line after each test case.
 

Output
For each test case, print the minimal steps in one line.
 

Sample Input
2 1234 2144 1111 9999
 

Sample Output
2 4



#include <iostream>  
#include <cstdio>  
#include <cstring>  
#include <queue>  

using namespace std;

struct node {
	int num[4], step;
};

node first, last;

//四维数组标记
bool vis[10][10][10][10];

void bfs() {
	memset(vis, false, sizeof(vis));
	queue<node> Q;
	node p, q; //用p表示当前的,q是下一步的
	p = first;
	p.step = 0;
	vis[p.num[0]][p.num[1]][p.num[2]][p.num[3]] = true;
	Q.push(p);

	while (!Q.empty()) {
		p = Q.front(); Q.pop();
		bool flag = true;
		for (int i = 0; i < 4; i++) {
			if (last.num[i] != p.num[i]) {
				flag = false;
				break;
			}
		}
		if (flag) {
			printf("%d\n", p.step);
			return;
		}

		//三种平行情况,注意一步之内任何一个元素都可能+-1,任何两个相邻元素之间都可能交换
		//+1
		for (int i = 0; i < 4; i++) {
			q = p;
			if (p.num[i] == 9) q.num[i] = 1;
			else q.num[i] = p.num[i] + 1;
			if (!vis[q.num[0]][q.num[1]][q.num[2]][q.num[3]]) {
				vis[q.num[0]][q.num[1]][q.num[2]][q.num[3]] = true;
				q.step = p.step + 1;
				Q.push(q);
			}
		}

		//-1
		for (int i = 0; i < 4; i++) {
			q = p;
			if (p.num[i] == 1) q.num[i] = 9;
			else q.num[i] = p.num[i] - 1;
			if (!vis[q.num[0]][q.num[1]][q.num[2]][q.num[3]]) {
				vis[q.num[0]][q.num[1]][q.num[2]][q.num[3]] = true;
				q.step = p.step + 1;
				Q.push(q);
			}
		}

		//exchange
		for (int i = 0; i < 3; i++) {
			q = p;
			q.num[i] = p.num[i + 1];
			q.num[i + 1] = p.num[i];
			if (!vis[q.num[0]][q.num[1]][q.num[2]][q.num[3]]) {
				vis[q.num[0]][q.num[1]][q.num[2]][q.num[3]] = true;
				q.step = p.step + 1;
				Q.push(q);
			}
		}
	}
}

int main()
{
	int T;
	char cf[10], cl[10];
	scanf("%d", &T);
	while (T--) {
		scanf("%s%s", cf, cl);
		for (int i = 0; i < 4; i++) {
			first.num[i] = cf[i] - '0';
			last.num[i] = cl[i] - '0';
		}
		bfs();
	}
	return 0;
}




13、无人机网络安全攻击检测:入侵检测系统综述 本文综述了无人机网络(FANETs)中的网络安全攻击与入侵检测系统(IDS)研究进展。文章介绍了无人机网络的架构设计、路由协议分类及移动模型,重点分析了DoS、DDoS、病毒蠕虫和零日攻击等常见安全威胁,并系统梳理了网络型、主机型、签名型、异常型、混合型等多种IDS的技术原理与应用。通过对比不同攻击类型及其检测机制,提出了综合使用多类IDS、更新签名库、优化路由、加强加密和建立应急响应等安全防护建议。同时展望了人工智能、量子安全和融合安全架构等未来发展趋势,旨在为提升无人机网络的安全性提供全面的技术参考。 阅读详情

相关推荐

VScode高效开发STM32:头文件路径配置全解析

本文详细解析了在VScode中高效开发STM32项目的核心步骤——头文件路径配置。针对常见的“找不到头文件”问题,文章深入剖析了IntelliSense的工作原理,并提供了手把手创建和解读c_cpp_properties.json配置文件的完整指南,包括includePath、defines、compilerPath等关键项的设置,帮助开发者彻底解决红色波浪线错误,实现精准的代码提示与跳转。

weixin_28835789的博客 339

SDUT 校赛 D题 魔戒(bfs+四维数组)

魔戒 Time Limit: 1000MS Memory Limit: 65536KB Problem Description 蓝色空间号和万有引力号进入了四维水洼,发现了四维物体--魔戒。 这里我们把飞船和魔戒都抽象为四维空间中的一个点,分别标为 "S" 和 "E"。空间中可能存在障碍物,标为 "#",其他为可以通过的位置。 现在他们想要尽快到达魔戒进行探索,你

MM__1997的博客 918

【算力网络】算力知识

尽管算力这个词在近年来很“火”,但其背后的含义,却很少有人真正了解

qq_42809645的博客 1万+

hdu1195Open the Lock(BFS)

题目链接:hdu1195 思路:BFS,对于每个数每次有11种操作,千位和百位交换,百位和十位交换,十位和个位交换,千位加一或减一,百位加一或减一,十位加一或减一,个位加一或减一,将每次操作得到的数与目标数进行对比,同时用数组v[]进行标记,已出现过的数不再压入队列中 #include #include #include #include #include #include #in

no pains,no gains 1314

三菱PLC通信库大比拼:手把手教你用C#实现最高效的McProtocol数据读写

本文深入比较了三菱PLC通信库的性能,重点介绍了如何使用C#高效实现McProtocol数据读写。通过实测数据对比HslCommunication、McProtocol-next和自定义方案的优劣,提供优化技巧和代码示例,帮助开发者在工业自动化场景中提升通信效率。

m0n1o2p的博客 254

从代码到实践:手把手教你用EmbodiedOcc++实现高效3D占用预测(含ScanNet配置)

本文提供了EmbodiedOcc++框架在ScanNet数据集上实现高效3D占用预测的完整实践指南。从环境搭建、数据预处理入手,详细解析了其核心创新点——几何引导优化(GRM)与语义感知不确定性采样(SUS)的代码实现与配置,并分享了训练、评估及调参的实战技巧,帮助开发者快速掌握这一先进的3D感知技术。

terraform7cloud的博客 587

hdu 1195 Open the Lock(BFS && DBFS)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1195 推荐一个个人感觉讲解得比较好的DBFS的博客 http://blog.sina.com.cn/s/blog_8627bf080100ticx.html         所谓双向广搜,就是初始结点向目标结点和目标结点向初始结点同时扩展,直至在两个扩展方向上出现同一个结点,

Where amazing happens 416

知识图谱实战:从零搭建一个企业级金融风控图谱(附完整代码)

本文提供了一份从零构建企业级金融风控知识图谱的实战指南。通过使用Neo4j图数据库和Python,手把手教你整合多源数据、设计数据模型,并利用Cypher查询与图算法挖掘隐藏的关联风险与欺诈网络,附有完整代码,助力金融科技从业者实现从数据孤岛到全局风险洞察的升级。

weixin_29095587的博客 355

HDU 1195 Open the Lock (双向广搜)

题意:给你初始4个数字和目标4个数字,问是否能由初始经过变换到目标数字; 变换规则:每个数字可以加1(9+1=1)或减1(1-1=9),或交换相邻的数字(最左和最右不是相邻的)。 双向广搜:分别对初始和目标数字进行广搜,vis数组用1和2标记两种已搜索的数字,用mp数组记录状态的步数。 当从前往后搜可以到达2或从后往前搜可以到达1状态则就可以了。。。 #in

不吸血的Vampire 1120

地平线旭日X3 安装xfce桌面+VNC查看USB摄像头

VNC是Virtual Network Computing的缩写,它是一种使用RFB(Remote Frame Buffer)协议的用于控制远程电脑的图形桌面分享系统。xfce桌面相比于GNOME桌面更加轻量,占用的资源更少,在没有GPU的设备上也可以运行(旭日的Desktop版本从外观上好像就是xfce桌面,具体没有尝试)。可以使用专用的VNC客户端连接到开发板,例如vnc viewer。板子默认带有openssh-server,因此,WiFi热点连接成功后,就可以使用ssh登录开发板了。

bingdund的博客 509

探秘RK3588:OverlayFS挂载与固件升级全攻略

本文围绕RK3588芯片的OverlayFS文件系统挂载与固件升级技术展开详细阐述。首先介绍了RK3588芯片的卓越性能及其在嵌入式领域的广泛应用,重点分析了OverlayFS文件系统的分层架构原理及其在RK3588设备上的挂载方法,包括详细的挂载步骤、常见问题解决方案。随后详细阐述了RK3588设备在Windows和Linux环境下的固件升级方案,涵盖升级准备、具体操作流程及故障处理等内容。最后通过智能安防监控设备的实际案例,展示了OverlayFS挂载与固件升级技术的应用效果。文章为嵌入式开发者提供了全

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 285

HDU 1195 Open the Lock(BFS)

Problem Description Now an emergent task for you is to open a password lock. The password is consisted of four digits. Each digit is numbered from 1 to 9. Each time, you can add or minus 1 to any digi...

AAS48的博客 239

动态规划之【树形DP】第3课:树形DP应用案例实践2

动态规划之【树形DP】第3课:树形DP应用案例实践2

王老师青少年编程 759

HDU1195:Open the Lock(BFS)

Problem Description Now an emergent task for you is to open a password lock. The password is consisted of four digits. Each digit is numbered from 1 to 9.  Each time, you can add or minus 1 to any d

ACM!荣耀之路! 2819

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

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

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

hdu 1195 Open the Lock(双向bfs)

挺好的一道题目,双向bfs的题目,也能单向bfs写。不过双向写的代码太恶心了......还是因为不熟悉 题目大意:给出原密码和准确密码,对于原密码每次可以进行三个操作: 1:任意一位+1 且9+1=1 2:任意一位-1 且1-1=9 3:相邻两位互换,且首位和末位不是相邻的。 (密码只有四位数,每个数字1-9) 题目要求原密码变成准确密码的最少步数 单向bfs: #inclu

Paradiser 966

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

hdu 1195 Open the Lock

hdu   1195   Open the Lock             题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1195 题目大意:有一个四位数字1~9密码锁,定义两种操作①加或减任意一位②交换相邻两位(此四位不成环),给出初始状态和目标状态,问最少需要操作几步。 题目分析:很容易想到用BFS,不幸的是仅用BFS很有可能超时,那就优化

slicer的技术交流栈 886

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

HDU-1195 Open the Lock

Open the Lock Problem Description Now an emergent task for you is to open a password lock. The password is consisted of four digits. Each digit is numbered from 1 to 9. Each time, you can add or minus...

一只弱渣 364

HDU 1195 Open the Lock

1195 Open the Lock http://acm.hdu.edu.cn/showproblem.php?pid=1195 大致题意:给你两个四位数,一个作为开始一个作为目标,有三种操作每个位可以加1可以减1,可以与相邻的交换,都算一步,求转化到目标的最小步数 #include #include using namespace std; char start[5], end[5]; in

Java# 1114

hdu1195(Open the Lock)

点击打开链接 Problem Description Now an emergent task for you is to open a password lock. The password is consisted of four digits. Each digit is numbered from 1 to 9. Each time, you can add or minus

寻找、发现、追求、获得———这就是狼的生活要素 683

HDU--1195--bfs--Open the Lock

/* Name: HDU--1195--Open the Lock Author: shen_渊 Date: 17/04/17 08:54 Description: bfs,用四维数组标记状态,每位数字可以做三种操作 +1,-1,交换 */ #include #include #include using namespace std; struct node{ int steps;

shen_渊 的博客 320

zoj 2416/hdu 1195 Open the Lock BFS基础

<br />很基础的BFS,不过由于自己太菜鸟,问了青蛙牛才明白<br />**********************************************<br />对于首状态 1234<br />他的下一个状态可以是<br />2234 1334 1244 1235<br />9234 1134 1224 1233<br />2134 1324 1243<br />把这些状态都放到队列里面去,并且把他们的步数记录为1<br /><br />然后在队列里面拉出头状态,2234<br />继续枚

leolin_的专栏 591

HDU--Open the Lock1195(BFS)

【代码】HDU--Open the Lock1195(BFS)

无聊人的博客 425

HDU 1195 Open the Lock (双向BFS)

单广,双广都用了,感觉双向BFS,太棒了,HDU的这个题双向BFS时间优化的太棒了 有图,有真相!

NotPerfect-EOF 1591

hdu(1195) Open the Lock

唉,花费了一上午才给搞出来; 代码有点长,但很好理解; 出错的原因; 一;每次操作之前都要更新:cur=next;(重要) 二;标记visit用四维,用两维吼不住; 三;输入格式是用字符输入,在转化为数字,直接输入数字会把它当做一个数。     #include"stdio.h" #include"string.h" #include"queue" using namespa

飞雪---晨 769

hdu1195 Open the lock 双向广度优先搜索

从起点和终点同时开始搜索,直到两个搜索的点相交,得到最短路径。

MuQYun的博客 838

hdu1195Open the Lock

Open the Lock Now an emergent task for you is to open a password lock. The password is consisted of four digits. Each digit is numbered from 1 to 9. Each time, you can add or minus 1 to any digit.

Rainbow__sea的博客 367
上一篇: hdu5651 xiaoxin juju needs help 组合数
下一篇: codeforces 579A Raising Bacteria
Daemoonn
博客等级 码龄11年 42粉丝 198原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值