JAVA 树中 按最长路径行驶

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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;

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航