快速业务通道

Java中栈.回溯.迷宫问题求解 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
e[row][col] == PASS || store[row][col] == EXIT) mazeStack.push(new MazeCell(row, col)); } /** 探路过程 */ public void exitMaze(PrintStream out) { currentCell = entryCell; currentList.add(currentCell); out.println(); while (!currentCell.equals(exitCell)) { int row = currentCell.getX(); int col = currentCell.getY(); display(System.out, store); if (!currentCell.equals(entryCell)) store[row][col] = VISITED; pushUnvisited(row - 1, col); pushUnvisited(row + 1, col); pushUnvisited(row, col - 1); pushUnvisited(row, col + 1); if (mazeStack.empty()) { display(out, store); out.println("Failure"); return; } else { currentCell = mazeStack.pop(); currentList.add(currentCell); } } display(out, store); out.println("Success"); } /** 得到某一输出路线 */ private void getPath() { if (currentList.size() <= 0) return; MazeCell cell = currentList.get(currentList.size() - 1); while (cell != currentList.get(0)) { List<MazeCell> subList = currentList.subList(0, currentList .indexOf(cell)); ListIterator<MazeCell> itr = subList.listIterator(); while (itr.hasNext()) { MazeCell target = itr.next(); if (adjoin(cell, target)) { removeElements(currentList.indexOf(target) + 1, currentList .indexOf(cell)); cell = target; break; } } } } /** 删除队列中由from至to的连续元素 */ private void removeElements(int from, int to) { int turn = to - from; while (turn > 0) { currentList.remove(from); turn--; } } /** 判断两个节点是否相邻 */ private boolean adjoin(MazeCell current, MazeCell target) { if ((current.getX() == target.getX() + 1 || current.getX() == target .getX() - 1) && (current.getY() == target.getY())) return true; if ((current.getY() == target.getY() + 1 || current.getY() == target .getY() - 1) && (current.getX() == target.getX())) return true; return false; } /** 输出路线 */ public void printPath(PrintStream out) { getPath(); out.println("Path:"); if (currentList.size() >= 2) { currentList.remove(currentList.size() - 1); currentList.remove(0); } Iterator<MazeCell> itr = currentList.iterator(); while (itr.hasNext()) { MazeCell cell = itr.next(); path[cell.getX()][ce

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号