服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

java 树中 按最长路径行驶

 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;
        }
    }

扫描关注微信公众号