Press the longest path in the Java tree

xiaoxiao2021-03-06  41

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.AddeElement (new integer (pOSX));

RoaddownVec.AddeElement (New Integer);

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.AddeElement (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 = Downnnum;

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;

}

}

转载请注明原文地址:https://www.9cbs.com/read-78731.html

New Post(0)