王道机试指南读后总结-4(有迷宫问题)
来源:互联网 发布:天津南开区淘宝城 编辑:程序博客网 时间:2024/05/29 18:57
搜索:
1.百鸡问题这种枚举问题注意的是有没有隐含条件减少枚举量,例如小鸡的个数可以用100-公鸡-母鸡得到而减少了循环层数。还有的是在第二层循环就可以母鸡的循环上限其实就是100-公鸡数2.BST走三维迷宫(广度优先搜索非常适合解决最优解问题)入口(0,0,0),出口(A-1,B-1,C-1),每分钟走一格,能否在T分钟走到出口。没格有无墙有墙2种。思路:a.要标记数组,搜索过的不再搜索b.将原本对路径的搜索转化为对状态的搜索,广度优先搜索即对状态间的相互转移构成的解答树进行的层次遍历。
//状态结构struct State{int x,y,z;int t;};int move[][3]={1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1}; //移动数组bool mark[a][b][c]={0}; //标记是否走过bool wall[a][b][c]={0}; //标记是否有墙queue <State> s; //状态队列time=BFS(a,b,c);int BFS(a,b,c){while(s.empty()!=true){ //状态树的层次遍历State now=s.front(),temp;s.pop();for(i=0;i<6;i++){temp.x=now.x+move[i][0];temp.y=now.y+move[i][1];temp.z=now.z+move[i][2];temp.t=now.t+1; //新状态if(temp.t<0||temp.y<0||temp.z<0||temp.x>=a||temp.y>=b||temp.z>=c) //新状态是否超出范围continue;if(mark[temp.x][temp.y][temp.z]==1) //如果被搜索过,跳过continue; if(wall[temp.x][temp.y][temp.z]==1) //如果有墙,跳过continue;s.push(temp); //新状态符合进一步搜索的要求mark[temp.x][temp.y][temp.z]=1; //标记if(temp.x==a-1&&temp.y==b-1&&temp.z==c-1) //如果到了出口返回时间return temp.t;}}return -1; //没有符合要求的,返回-1}
1.队列:为了扩展之前实现的状态,使用队列,将每次得到的状态依次放入队尾,每次取队头进行扩展。
2.标记:为了判断有效状态需要对状态进行标记。
3.状态扩展:尽可能扩展状态,并且先扩展先得出的状态,在解答树上的表现为我们层次遍历所有状态。
递归:
汉诺塔问题变形:每次移动必须是移到中间杆或者从中间杆移出,其他规则不变。
思路:考虑N个盘子从第一杆移到第三杆,等价于考虑N-1个盘子加一个最大盘子;
1.首先是N-1个盘子从第一杆到第三杆,然后加一步最大盘子到第二杆;
2.其次把N-1个盘子移到第一杆(等价于N-1个盘子从第一杆到第三杆),然后加一步最大盘子到第三杆;
3.最后把N-1个盘子移到第三杆;
这样设F(N)为把N个盘子从第一杆移到第三杆的移动次数,则F(N)=3*F(N-1)+2,F(1)=2;
long long hanoi(int num){if(num==1)return 2;else return 3*hanoi(num-1)+2;}
0 0
- 王道机试指南读后总结-4(有迷宫问题)
- 王道机试指南读后总结-5(迷宫深搜问题详解)
- 王道机试指南读后总结-1
- 王道机试指南读后总结-2
- 王道机试指南读后总结-3
- 王道机试指南读后总结-6(动态规划等)
- 王道机试第三章总结
- 王道机试第三章总结
- 【九度oj】1070题(修改自王道机试指南)
- 【java】王道计算机考研机试指南例题java版
- 设计简单的计算器-浙大2006年机试,参考王道机试指南
- 华为机试---迷宫问题
- 华为机试-迷宫问题
- 有技术才是王道
- 华为机试在线训练-牛客网(24)迷宫问题
- 指南第5章 例题1 UVA 11624 Fire!(迷宫问题【多源BFS】)
- poj3984(迷宫问题)
- 迷宫问题(递归)
- JQueryEasyUI 表单验证之数值验证框numberbox
- Jquery常用插件
- ctx赋值
- 安装Android Studio中SDK Manager出现的问题
- 点击<a>标签,链接到新的页面
- 王道机试指南读后总结-4(有迷宫问题)
- 一步一步实现自己的shell程序(一)---《Unix环境高级编程》读书笔记
- 八大排序算法讲解(附java实现代码)
- Java实现Html转PDF 和 Java工具类之Apache的Commons Lang和BeanUtils
- 一些打包的杂碎物件,java开发基本算必备
- stm32f405 HAL库串口接收错误。
- 找单词
- 简单Activity总结
- 初级的前端应该注意哪些问题;