hdu 1195 Open the Lock(广搜,简单)
猜密码,问最少操作多少次猜对,思路很简单的广搜,各种可能一个个列出来就可以了,可惜我写的很搓。
不过还是很开心,今天第一个一次过了的代码
- #define _CRT_SECURE_NO_WARNINGS
- //这是非一般的最短路,所以广搜到的最短的路不一定是所要的路线
- //所以应该把所有的路径都搜索出来,找到最短的转折数,看他是不是不大于2
- //我是 用边搜索边更新当前路径的最小转弯数 来写的
- #include<stdio.h>
- #include<string.h>
- #include<math.h>
- #include<algorithm>
- #include<queue>
- using namespace std;
- bool vis[];
- int a,b;
- struct tt
- {
- int x,step;
- };
- tt front,rear,temp;
- queue<tt>q;
- void solve(int x,int mark)
- {
- int x1,x2,x3,x4;
- x1=temp.x/;
- x2=temp.x/-x1*;
- x3=temp.x/-x1*-x2*;
- x4=temp.x%;
- if(mark==)
- {
- if(x==)
- rear.x=x1*+x2*+x3*+x4;
- else if(x==)
- rear.x=x1*+x2*+x3*+x4;
- else
- rear.x=x1*+x2*+x3+x4*;
- }
- else
- {
- if(x==){
- x1+=mark;
- if(x1>)x1-=;
- else if(x1<)x1+=;
- }
- else if(x==){
- x2+=mark;
- if(x2>)x2-=;
- else if(x2<)x2+=;
- }
- else if(x==){
- x3+=mark;
- if(x3>)x3-=;
- else if(x3<)x3+=;
- }
- else {
- x4+=mark;
- if(x4>)x4-=;
- else if(x4<)x4+=;
- }
- rear.x=x1*+x2*+x3*+x4;
- }
- if(!vis[rear.x])
- {
- rear.step=temp.step+;
- q.push(rear);
- vis[rear.x]=true;
- }
- }
- int bfs()
- {
- while(!q.empty())
- q.pop();
- memset(vis,false,sizeof(vis));
- front.x=a;front.step=;
- q.push(front);
- vis[a]=true;
- while(!q.empty())
- {
- temp=q.front();
- if(temp.x==b)
- return temp.step;
- q.pop();
- solve(,);
- solve(,-);
- solve(,);
- solve(,-);
- solve(,);
- solve(,-);
- solve(,);
- solve(,-);
- solve(,);
- solve(,);
- solve(,);
- }
- return ;
- }
- int main()
- {
- int t;
- scanf("%d",&t);
- while(t--)
- {
- scanf("%d%d",&a,&b);
- printf("%d\n",bfs());
- }
- return ;
- }
hdu 1195 Open the Lock(广搜,简单)的更多相关文章
- hdu 1195:Open the Lock(暴力BFS广搜)
Open the Lock Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- hdu 1195 Open the Lock
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1195 Open the Lock Description Now an emergent task f ...
- hdu 1253 胜利大逃亡 (广搜)
题目链接 Problem Description Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个ABC的立方体,可以被表示成A个 ...
- hdu 1242:Rescue(BFS广搜 + 优先队列)
Rescue Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submis ...
- HDU 1195 Open the Lock (双宽搜索)
意甲冠军:给你一个初始4数字和目标4数字,当被问及最初的目标转换为数字后,. 变换规则:每一个数字能够加1(9+1=1)或减1(1-1=9),或交换相邻的数字(最左和最右不是相邻的). 双向广搜:分别 ...
- hdu 2717 Catch That Cow(广搜bfs)
题目链接:http://i.cnblogs.com/EditPosts.aspx?opt=1 Catch That Cow Time Limit: 5000/2000 MS (Java/Others) ...
- hdu - 1195 Open the Lock (bfs) && hdu 1973 Prime Path (bfs)
http://acm.hdu.edu.cn/showproblem.php?pid=1195 这道题虽然只是从四个数到四个数,但是状态很多,开始一直不知道怎么下手,关键就是如何划分这些状态,确保每一个 ...
- HDU 1372 Knight Moves (广搜)
题目链接 Problem Description A friend of you is doing research on the Traveling Knight Problem (TKP) whe ...
- HDU 1728 逃离迷宫 (广搜)
题目链接 Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可 ...
随机推荐
- android ListView的介绍和优化
xml设计 <?xml version="1.0"?> -<RelativeLayout tools:context=".MainActivity&qu ...
- .Net三维控件
AnyCAD .Net三维建模和可视化控件为.Net 4.0开发者提供简单易用的三维建模.三维可视化和文件交换的API. 30天试用版下载: 1. 三维建模 三维建模有以下功能: 三维基本体,如点. ...
- C++实现设计模式之 — 简单工厂模式
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4251756.html 所谓简单工厂模式,是一种实例化对象的方式,只要输入需要实例化对象的名字 ...
- Mac支付宝插件风波
1.前言 首先我喜欢看一些创业的书,很多书里都会有马云的身影,马云也算是对我有一定的影响,从而我对淘宝也产生了一定的好感.但是关于这次插件事情,我对阿里产生了一些排斥的心里作用.我并不想吐槽淘宝,也不 ...
- Template、ItemsPanel、ItemContainerStyle、ItemTemplate
先来看一张图(网上下的图,加了几个字) 1.Template是指控件的样式 在WPF中所有继承自contentcontrol类的控件都含有此属性,(继承自FrameworkElementdl类的Tex ...
- .Net中的Socket通讯
.NetFrameWork为Socket通讯提供了System.Net.Socket命名空间,在这个命名空间里面有以下几个常用的重要类分别是: ·Socket类 这个低层的类用于管理连接,WebReq ...
- SQL JOB
数据库同步是一种比较常用的功能.以下结合我自己的体会整理的,如果有理解不完全或者有误的地方望大牛不理赐教.下面介绍的就是数据库同步的两种方式: 1.SQL JOB的方式 sql Job的方式同步数据库 ...
- Python 初学——V_Rename(第一个完整的python程序)
我在大一的时候就对python非常感兴趣,就是一直没有时间和机会去学习下,只是了解些表面的东西,今天早上整理电脑的时候发现文件夹里面的文件名是这样子的,有点小不舒服,特别想去除重复的"Str ...
- 微软更换考试中心后报名攻略以及MCT半价
微软从Prometric更换为Pearson的考试中心,比起以前的预约流程更加便捷. Pearson VUE为微软公司提供MCP考试服务 Pearson VUE为微软公司提供MCP考试服务 http: ...
- GITHUB 提交错误 Error: Permission denied (publickey) 解决
1. 在开发机上生成自己的密钥 ssh-keygen -b 1024 -t rsa -b 指密钥对长度 -t 指加密方式 Enter file in which to save the key ( ...