java电脑鼠_电脑鼠算法详解.ppt

小车当前所处区域 小车车头当前面向方向 应选择的策略 左下区域 上方 0 中右法则(中右左) 左下区域 下方 2 左手法则 左下区域 左方 3 右手法则 左下区域 右方 1 中左法则 右下区域 上方 0 中左法则 右下区域 下方 2 右手法则 右下区域 左方 3 中右法则 右下区域 右方 1 左手法则 左上区域 上方 0 右手法则 左上区域 下方 2 中左法则 左上区域 左方 3 左手法则 左上区域 右方 1 中右法则 右上区域 上方 0 左手法则 右上区域 下方 2 中右法则 右上区域 左方 3 中左法则 右上区域 右方 1 右手法则 向 心 法 策 略 表 4)回溯 当电脑鼠的四个方向都为不可行(有墙或已走过)时, 栈顶元素出栈 电脑鼠返回栈顶位置 从栈顶位置重新找路 附:走过的迷宫记录中不为FFFF 当电脑鼠的四个方向都为不可行(有墙或已走过)时, 栈顶元素出栈 电脑鼠返回栈顶位置 从栈顶位置重新找路 当电脑鼠的四个方向都为不可行(有墙或已走过)时, 栈顶元素出栈 电脑鼠返回栈顶位置 从栈顶位置重新找路 当电脑鼠的四个方向都为不可行(有墙或已走过)时, 栈顶元素出栈 电脑鼠返回栈顶位置 从栈顶位置重新找路 当电脑鼠的四个方向都为不可行(有墙或已走过)时, 栈顶元素出栈 电脑鼠返回栈顶位置 从栈顶位置重新找路 当电脑鼠的四个方向都为不可行(有墙或已走过)时, 栈顶元素出栈 电脑鼠返回栈顶位置 从栈顶位置重新找路 6)电脑鼠遍历 While(当前结点不是起点 || 起点处电脑鼠还有可行路经){ 记录电脑鼠所在点迷宫信息,电脑鼠方向 按某种法则寻路(此处选的是左手法则) If(没有可行路径) 回溯 当前结点入栈 电脑鼠进入下一结点 } 7)电脑鼠路径寻优 迷宫遍历结束后,电脑鼠就会得到迷宫可到达的所有结点墙信息。 此时电脑鼠不用动,在电脑鼠机器内部计算得到(通过计算等高表) 最优路径。 电脑鼠沿最优路径冲刺。 8)建立等高表 建立等高表要用到队列结构,使用广度优先遍历算法 初始化队列,把起点加入队列,并记起点路径长度为1 While(队列不为空) { 取队头元素 迷宫中当前结点可到达的结点路径长度加1,且全部加入队尾中 } 附:此处出队列的元素要记录下来,可记录于线性表中 9)根据等高表查找最优路径 最优路径的查找要从终点开始 初始化栈,将终点坐标加入 While(栈顶元素不是起点) { 查找栈顶元素可到达的,路径长度小于栈顶元素路径长度的结点入栈 } 10)路径寻优 等高表建立与查找最优路径的演示如右图: 附加事项 节省内存空间 最优路径优化 2) JAVA中队列的实现 remove、element、offer?、poll、peek?其实是属于Queue接口 异常---提示---阻塞 队列演示 2) 队列思考题 a) 入队顺序1、2、3、4,那么出队顺序是? b)某汽车轮渡口,过江渡船每次能载10辆车。车分客车类和货车类,上渡船有如下规定: 客车先于货车上渡船,且每上4辆客车,才允许放一辆货车; 若等待客车不足4辆,则以货车代替; 若无货车等待,允许客车都上船。 试设计一个算法模拟渡口管理。 各阶段所用的算法 3) 回溯 算法思想:深度优先遍历 步骤一:先将根结点作为活结点; 步骤二:向活结点的子结点扩展,若其存在,子结点作为新的活结点,若不存在可扩展子结点,将当前活结点设为不可扩展结点,其父节点作为当前的活结点; 步骤三:重复步骤二,直至找到所求结点,输出路径,或者到没有可扩展结点时结束,输出null。 3) 回溯 3) 回溯 3) 回溯 3) 回溯 3) 回溯 3) 回溯 3) 回溯 3) 回溯 3) 回溯 3) 回溯 3) 回溯 3) 回溯 3) 回溯 3) 回溯 3) 回溯思考题——N皇后问题 在一个N*N的棋盘上放置N个皇后,且使得每两个之间不能互相攻击,也就是使得每两个不在同一行,同一列和同一斜角线上。 各阶段所用的算法 4) 广度优先 特点:横向优先遍历 步骤一:先将跟结点入队列; 步骤二:取队头元素,遍历队头元素的所有子结点,并将所有子结点加入队列; 步骤三:重复步骤二,直至找到所求结点,或者队列为空。 4) 广度优先 4) 广度优先 4) 广度优先 4) 广度优先 4) 广度优先 4) 回溯思考题 用java代码实现前面查找的例子(找7)。 五、电脑鼠走迷宫的具体实现过程 1)电脑鼠每一步记录的数据 2)电脑鼠初始化 迷宫二维数组,每个结点定义为FFFF表示上右下左都有墙。 迷宫鼠方向:电脑鼠放入方向,一般默认为向上(1000) 栈,加入起点坐标 下面以起点为(0,0),终点为(7,7)为例讲解 3)电脑鼠寻路 W

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值