java最长路径算法_月光软件站 - 编程文档 - Java - JAVA 树中 按最长路径行驶

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

roadUPVec.addElement(tempVec.elementAt(i));

}

}

else

tempUP=false;

if(posX

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

roadRIGHTVec.addElement(tempVec.elementAt(i));

}

}

else

tempRIGHT=false;

if(posY

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

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

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;

}

}

down_info.asp?id=39182

相关文章:

相关软件:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值