题目

猜密码,问最少操作多少次猜对,思路很简单的广搜,各种可能一个个列出来就可以了,可惜我写的很搓。

不过还是很开心,今天第一个一次过了的代码

  1. #define _CRT_SECURE_NO_WARNINGS
  2. //这是非一般的最短路,所以广搜到的最短的路不一定是所要的路线
  3. //所以应该把所有的路径都搜索出来,找到最短的转折数,看他是不是不大于2
  4. //我是 用边搜索边更新当前路径的最小转弯数 来写的
  5. #include<stdio.h>
  6. #include<string.h>
  7. #include<math.h>
  8. #include<algorithm>
  9. #include<queue>
  10. using namespace std;
  11. bool vis[];
  12. int a,b;
  13.  
  14. struct tt
  15. {
  16. int x,step;
  17. };
  18.  
  19. tt front,rear,temp;
  20. queue<tt>q;
  21.  
  22. void solve(int x,int mark)
  23. {
  24. int x1,x2,x3,x4;
  25.  
  26. x1=temp.x/;
  27. x2=temp.x/-x1*;
  28. x3=temp.x/-x1*-x2*;
  29. x4=temp.x%;
  30. if(mark==)
  31. {
  32. if(x==)
  33. rear.x=x1*+x2*+x3*+x4;
  34. else if(x==)
  35. rear.x=x1*+x2*+x3*+x4;
  36. else
  37. rear.x=x1*+x2*+x3+x4*;
  38. }
  39. else
  40. {
  41. if(x==){
  42. x1+=mark;
  43. if(x1>)x1-=;
  44. else if(x1<)x1+=;
  45. }
  46. else if(x==){
  47. x2+=mark;
  48. if(x2>)x2-=;
  49. else if(x2<)x2+=;
  50. }
  51. else if(x==){
  52. x3+=mark;
  53. if(x3>)x3-=;
  54. else if(x3<)x3+=;
  55. }
  56. else {
  57. x4+=mark;
  58. if(x4>)x4-=;
  59. else if(x4<)x4+=;
  60. }
  61. rear.x=x1*+x2*+x3*+x4;
  62. }
  63. if(!vis[rear.x])
  64. {
  65. rear.step=temp.step+;
  66. q.push(rear);
  67. vis[rear.x]=true;
  68. }
  69. }
  70. int bfs()
  71. {
  72.  
  73. while(!q.empty())
  74. q.pop();
  75. memset(vis,false,sizeof(vis));
  76. front.x=a;front.step=;
  77. q.push(front);
  78. vis[a]=true;
  79. while(!q.empty())
  80. {
  81. temp=q.front();
  82. if(temp.x==b)
  83. return temp.step;
  84. q.pop();
  85. solve(,);
  86. solve(,-);
  87. solve(,);
  88. solve(,-);
  89. solve(,);
  90. solve(,-);
  91. solve(,);
  92. solve(,-);
  93. solve(,);
  94. solve(,);
  95. solve(,);
  96. }
  97. return ;
  98. }
  99.  
  100. int main()
  101. {
  102. int t;
  103. scanf("%d",&t);
  104. while(t--)
  105. {
  106. scanf("%d%d",&a,&b);
  107. printf("%d\n",bfs());
  108. }
  109. return ;
  110. }

hdu 1195 Open the Lock(广搜,简单)的更多相关文章

  1. hdu 1195:Open the Lock(暴力BFS广搜)

    Open the Lock Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  2. hdu 1195 Open the Lock

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1195 Open the Lock Description Now an emergent task f ...

  3. hdu 1253 胜利大逃亡 (广搜)

    题目链接 Problem Description Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个ABC的立方体,可以被表示成A个 ...

  4. hdu 1242:Rescue(BFS广搜 + 优先队列)

    Rescue Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submis ...

  5. HDU 1195 Open the Lock (双宽搜索)

    意甲冠军:给你一个初始4数字和目标4数字,当被问及最初的目标转换为数字后,. 变换规则:每一个数字能够加1(9+1=1)或减1(1-1=9),或交换相邻的数字(最左和最右不是相邻的). 双向广搜:分别 ...

  6. hdu 2717 Catch That Cow(广搜bfs)

    题目链接:http://i.cnblogs.com/EditPosts.aspx?opt=1 Catch That Cow Time Limit: 5000/2000 MS (Java/Others) ...

  7. hdu - 1195 Open the Lock (bfs) && hdu 1973 Prime Path (bfs)

    http://acm.hdu.edu.cn/showproblem.php?pid=1195 这道题虽然只是从四个数到四个数,但是状态很多,开始一直不知道怎么下手,关键就是如何划分这些状态,确保每一个 ...

  8. HDU 1372 Knight Moves (广搜)

    题目链接 Problem Description A friend of you is doing research on the Traveling Knight Problem (TKP) whe ...

  9. HDU 1728 逃离迷宫 (广搜)

    题目链接 Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可 ...

随机推荐

  1. android ListView的介绍和优化

    xml设计 <?xml version="1.0"?> -<RelativeLayout tools:context=".MainActivity&qu ...

  2. .Net三维控件

    AnyCAD .Net三维建模和可视化控件为.Net 4.0开发者提供简单易用的三维建模.三维可视化和文件交换的API. 30天试用版下载: 1.  三维建模 三维建模有以下功能: 三维基本体,如点. ...

  3. C++实现设计模式之 — 简单工厂模式

    作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4251756.html 所谓简单工厂模式,是一种实例化对象的方式,只要输入需要实例化对象的名字 ...

  4. Mac支付宝插件风波

    1.前言 首先我喜欢看一些创业的书,很多书里都会有马云的身影,马云也算是对我有一定的影响,从而我对淘宝也产生了一定的好感.但是关于这次插件事情,我对阿里产生了一些排斥的心里作用.我并不想吐槽淘宝,也不 ...

  5. Template、ItemsPanel、ItemContainerStyle、ItemTemplate

    先来看一张图(网上下的图,加了几个字) 1.Template是指控件的样式 在WPF中所有继承自contentcontrol类的控件都含有此属性,(继承自FrameworkElementdl类的Tex ...

  6. .Net中的Socket通讯

    .NetFrameWork为Socket通讯提供了System.Net.Socket命名空间,在这个命名空间里面有以下几个常用的重要类分别是: ·Socket类 这个低层的类用于管理连接,WebReq ...

  7. SQL JOB

    数据库同步是一种比较常用的功能.以下结合我自己的体会整理的,如果有理解不完全或者有误的地方望大牛不理赐教.下面介绍的就是数据库同步的两种方式: 1.SQL JOB的方式 sql Job的方式同步数据库 ...

  8. Python 初学——V_Rename(第一个完整的python程序)

    我在大一的时候就对python非常感兴趣,就是一直没有时间和机会去学习下,只是了解些表面的东西,今天早上整理电脑的时候发现文件夹里面的文件名是这样子的,有点小不舒服,特别想去除重复的"Str ...

  9. 微软更换考试中心后报名攻略以及MCT半价

    微软从Prometric更换为Pearson的考试中心,比起以前的预约流程更加便捷. Pearson VUE为微软公司提供MCP考试服务 Pearson VUE为微软公司提供MCP考试服务 http: ...

  10. GITHUB 提交错误 Error: Permission denied (publickey) 解决

    1.  在开发机上生成自己的密钥 ssh-keygen -b 1024 -t rsa -b 指密钥对长度  -t 指加密方式 Enter file in which to save the key ( ...