PDA

View Full Version : چگونگی نشانه گذاری مسیر برای حل Maze



seyedVB
جمعه 23 آذر 1386, 01:20 صبح
سلام .
من برنامه ای دارم می نویسم که یک ماتریس nxn میگره که خونه اول و آخرش 0 است و بقیه
خونه ها رو کاربر یا 0 یا 1 به دلخواه میذاره که 1 ها همون دیوارند و 0 ها یعنی مسیر بازه .

حالا من اینو با بازگشتی نوشتم فقط نمیدونم چطور باید نشانه گذاری کرد ... هی دچار لوپ میشه ..



private bool Explore(int row, int col)
{

//if Row And Cols Jumped Out Of Matrix
if (row < 0 | col < 0 | row > r | col > c) { return false; }

//if We Taken To Walls
if (Matrix[row,col]==1)

// if We Taken To Goal
if (row==r && col==c) {return true ;}

//Recurison
if (Explore(row - 1, col)) { return true; } //search up
if (Explore(row + 1, col)) { return true; } //search down
if (Explore(row, col - 1)) { return true; } //search left
if (Explore(row, col + 1)) { return true; } //search right
//if None Of Aboves
return false;
}

404_3140
جمعه 23 آذر 1386, 01:53 صبح
اون ایف که خونه ه یک باشه رو چرا هیچی جلوش نذاشتید؟؟

seyedVB
جمعه 23 آذر 1386, 01:55 صبح
اون ایفه یک retrun false کم داره



privatebool Explore(int row, int col)
{
//if Row And Cols Jumped Out Of Matrix
if (row < 0 | col < 0 | row > r | col > c) { returnfalse; }
//if We Taken To Walls
if (Matrix[row, col] == 1) returnfalse;
// if We Taken To Goal
if (row==r && col==c) {returntrue ;}
//Recurison
if (Explore(row - 1, col)) { returntrue; } //search up
if (Explore(row + 1, col)) { returntrue; } //search down
if (Explore(row, col - 1)) { returntrue; } //search left
if (Explore(row, col + 1)) { returntrue; } //search right
//if None Of Aboves
returnfalse;
}

404_3140
جمعه 23 آذر 1386, 02:31 صبح
یه آرایه مارک هم کافیه گرفته شه. که وقتی وارد تابع می شیم اون رو ترو کنیم و وقتی می ریم بیرون فالس کنیمش....

seyedVB
جمعه 23 آذر 1386, 10:41 صبح
مگر آرایه هم True یا False می شه .... میشه مثال بزنید .... ؟؟؟؟

404_3140
جمعه 23 آذر 1386, 11:47 صبح
چرا نشه؟!

bool mark[100][100];اینو برای کل جدول می گیریم...