|
|
JAVA 树中 按最长路径行驶 |
|
|
作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站 |
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; } }
|
|
相关文章:相关软件: |
|