广搜破解密码(HDU1195)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1195
解题报告:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue> using namespace std; struct node
{
int num[],step;
}; node start,_end;
bool visit[][][][],flag; void bfs()
{
int i;
node p,q;
queue<node> Q;
memset(visit,false,sizeof(visit));
flag=true;
start.step=;
p=start;
visit[p.num[]][p.num[]][p.num[]][p.num[]]=true;
Q.push(p);
while(!Q.empty())
{
p=Q.front();
Q.pop(); flag=true;
for(i=; i<; i++)
if(p.num[i]!=_end.num[i])
{
flag=false;
break;
}; if(flag)
{
printf("%d\n",p.step);
return;
} for(i=; i<; i++) ///+1
{
q=p;
if(p.num[i]==) q.num[i]=;
else q.num[i]=p.num[i]+;
q.step=p.step+;
if(!visit[q.num[]][q.num[]][q.num[]][q.num[]])
{
visit[q.num[]][q.num[]][q.num[]][q.num[]]=true;
Q.push(q);
}
}
for(i=; i<; i++) ///-1
{
q=p;
if(p.num[i]==) q.num[i]=;
else q.num[i]=p.num[i]-;
q.step=p.step+;
if(!visit[q.num[]][q.num[]][q.num[]][q.num[]])
{
visit[q.num[]][q.num[]][q.num[]][q.num[]]=true;
Q.push(q);
}
}
for(i=; i<; i++) ///相邻交换
{
q=p;
q.num[i]=p.num[i+];
q.num[i+]=p.num[i];
q.step=p.step+;
if(!visit[q.num[]][q.num[]][q.num[]][q.num[]])
{
visit[q.num[]][q.num[]][q.num[]][q.num[]]=true;
Q.push(q);
}
}
}
} int main()
{
int cas,i;
char chf[],chl[];
scanf("%d",&cas);
while(cas--)
{
scanf("%s%s",chf,chl);
for(i=; i<; i++)
{
start.num[i]=chf[i]-'';
_end.num[i]=chl[i]-'';
}
bfs();
}
return ;
}
广搜破解密码(HDU1195)的更多相关文章
- HDU-1226-超级密码-队列+广搜+大数取模
Ignatius花了一个星期的时间终于找到了传说中的宝藏,宝藏被放在一个房间里,房间的门用密码锁起来了,在门旁边的墙上有一些关于密码的提示信息: 密码是一个C进制的数,并且只能由给定的M个数字构成,同 ...
- hdu 1195 Open the Lock(广搜,简单)
题目 猜密码,问最少操作多少次猜对,思路很简单的广搜,各种可能一个个列出来就可以了,可惜我写的很搓. 不过还是很开心,今天第一个一次过了的代码 #define _CRT_SECURE_NO_WARNI ...
- 为什么现在更多需要用的是 GPU 而不是 CPU,比如挖矿甚至破解密码?
作者:Cascade链接:https://www.zhihu.com/question/21231074/answer/20701124来源:知乎著作权归作者所有,转载请联系作者获得授权. 想要理解G ...
- HDU--杭电--1195--Open the Lock--深搜--都用双向广搜,弱爆了,看题了没?语文没过关吧?暴力深搜难道我会害羞?
这个题我看了,都是推荐的神马双向广搜,难道这个深搜你们都木有发现?还是特意留个机会给我装逼? Open the Lock Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 5652(二分+广搜)
题目链接:http://acm.hust.edu.cn/vjudge/contest/128683#problem/E 题目大意:给定一只含有0和1的地图,0代表可以走的格子,1代表不能走的格 子.之 ...
- nyoj 613 免费馅饼 广搜
免费馅饼 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy ...
- poj 3984:迷宫问题(广搜,入门题)
迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7635 Accepted: 4474 Description ...
- poj 3278:Catch That Cow(简单一维广搜)
Catch That Cow Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 45648 Accepted: 14310 ...
- 双向广搜 POJ 3126 Prime Path
POJ 3126 Prime Path Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16204 Accepted ...
随机推荐
- 29-----BBS论坛
BBS论坛(二十九) 29.帖子详情页布局 (1)front/hooks.py @bp.errorhandler def page_not_found(): return render_templat ...
- Linpack之HPCG测试
平台信息 Description: CentOS Linux release 7.6.1810 (Core) 注意事项 安装HPL之前需要配置好: CXX编译器(检查:c++ -v) MPICH 并行 ...
- Python操作列表
1.List Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: >>> ...
- linux 查看页大小
# getconf PAGE_SIZE 一般是4096
- 性能测试工具LoadRunner14-LR之Controller 简介
当虚拟用户开发完成之后,使用Controller将这个执行脚本的用户从单用户转化为多用户,从而模拟大量用户操作,进而形成负载.(多用户单循环,多用户多循环)我们需要对负载模拟的方式和特征进行配置. 场 ...
- (转)shell解析命令行的过程以及eval命令
shell解析命令行的过程以及eval命令 本文说明的是一条linux命令在执行时大致要经过哪些过程?以及这些过程的大致顺序. 1.1 shell解析命令行 shell读取和执行命令时的大致操作过 ...
- stm32 窗口看门狗学习(一)
什么是窗口看门狗? 1)独立看门狗 限制喂狗时间在0-x内,x由相关寄存器决定.喂狗的时间不能过晚. 2)窗口看门狗 之所以称为窗口就是因为其 ...
- PHPcms的安装步骤
http://www.phpcms.cn 制作良好习惯: 1.备份 2.随时保存 3.注释 在自己的PHP环境里 简历一个文件夹 比如命名为YiNong 访问安装地址,http://localhost ...
- java的wait/notify小结
wait()是使线程停止运行,而notify使停止的线程继续运行 wait()锁释放与notify()锁不释放 当线程呈wait状态时,调用线程对象的interrupt()方法会出现异常 带一个参数的 ...
- 同源策略引发对跨域jsonp跨域的理解
一,同源策略其实网络的安全基石,既:http://www.baidu.com:80协议(http或者HTTPS或者ws或者wss).域名(www.baidu.com).端口(默认80,可以不写 htt ...