|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
private Vector findRoad(int posX,int posY,int dir){ Vector roadUPVec=null,roadRIGHTVec=null,roadDOWNVec=null,roadLEFTVec=null; boolean tempUP=false,tempRIGHT=false,tempLEFT=false,tempDOWN=false; int upNum=0,downNum=0,rightNum=0,leftNum=0,maxNum=0; if(posY>0 && m_nowMap[posX][posY-1]!=0 && dir!=DIR_UP){ roadUPVec=new Vector(); roadUPVec.addElement(new Integer(posX)); roadUPVec.addElement(new Integer(posY-1)); Vector tempVec=findRoad(posX,posY-1,DIR_DOWN); if(tempVec!=null){ for(int i=0;i<tempVec.size();i++) roadUPVec.addElement(tempVec.elementAt(i)); } } else tempUP=false; if(posX<COLUMN-1 && m_nowMap[posX+1][posY]!=0 && dir!=DIR_RIGHT){ roadRIGHTVec=new Vector(); roadRIGHTVec.addElement(new Integer(posX+1)); roadRIGHTVec.addElement(new Integer(posY)); Vector tempVec=findRoad(posX+1,posY,DIR_LEFT); if(tempVec!=null){ for(int i=0;i<tempVec.size();i++) roadRIGHTVec.addElement(tempVec.elementAt(i)); } } else tempRIGHT=false; if(posY<ROW && m_nowMap[posX][posY+1]!=0 && dir!=DIR_DOWN){ roadDOWNVec=new Vector(); roadDOWNVec.addElement(new Integer(posX)); roadDOWNVec.addElement(new Integer(posY+1)); Vector tempVec=findRoad(posX,posY+1,DIR_UP); if(tempVec!=null){ for(int i=0;i<tempVec.size();i++) roadDOWNVec.addElement(tempVec.elementAt(i)); } } else tempDOWN=false; if(posX<0 && m_nowMap[posX-1][posY]!=0 && dir!=DIR_LEFT){ roadLEFTVec=new Vector(); roadLEFTVec.addElement(new Integer(posX-1)); roadLEFTVec.addElement(new Integer(posY)); Vector tempVec=findRoad(posX-1,posY,DIR_RIGHT); if(tempVec!=null){ for(int i=0;i<tempVec.size();i++) roadLEFTVec.addElement(tempVec.elementAt(i)); } } else tempLEFT=false; if(!tempUP && !tempRIGHT && !tempDOWN && !tempLEFT) return null; else{ if(roadUPVec!=null) upNum=roadUPVec.size(); if(roadRIGHTVec!=null) rightNum=roadUPVec.size(); if(roadDOWNVec!=null) downNum=roadUPVec.size(); if(roadLEFTVec!=null) leftNum=roadUPVec.size(); maxNum=rightNum; if(upNum>maxNum) maxNum=upNum; if(leftNum>maxNum) maxNum=leftNum; if(downNum>maxNum) maxNum=downNum; if(maxNum==upNum) return roadUPVec; else if(maxNum==downNum) return roadDOWNVec; else if(maxNum==rightNum) return roadRIGHTVec; else if(maxNum==leftNum) return roadLEFTVec; else return null; } } 返回类别: 教程 上一教程: struts 学习笔记(一)--搭建环境 下一教程: 如何在SqlServer与oracel中进行分页的讨论! 您可以阅读与"JAVA 树中 按最长路径行驶"相关的教程: · JAVA学习路径(三)过程篇 · java文件的相对路径 · Java学习路径(三)过程篇 · JAVA学习路径(二)书籍篇 · Java学习路径(一)工具篇 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |