走迷宮問題

2022-08-30 13:45:18 字數 1147 閱讀 7845

如下由'#'和'.'符號組成的圖案表示乙個迷宮,在這個迷宮中,'.'表示可以走的路徑,可以通過,而'#'表示迷宮的牆,是不能穿過的。我們的目的就是要從迷宮的起點走到終點,找出一條合適的路徑,當然最短路徑最好。

站在迷宮中的乙個位置上,環顧四周,總共有四個方向可以選擇,而這每乙個方向都有可能成功,同樣也有可能失敗。在成功的時候我們就需要順著這條路徑往下走,而失敗則需要返回上乙個可以選擇的位置。因此我們需要儲存之前走過路徑的狀態,很容易能夠想到遞迴的解法,使用系統的棧就可以很好的還原狀態。

故我們使用遞迴的解法,在每乙個位置上都進行上、下、左、右四個方向的探索,如果這個方向的路徑是有效的,則往下遞迴。無效則跳過,如果四個方向都沒有合適的路徑,我們就返回上一層(即上乙個位置)重新查詢。不斷嘗試,直到從達到終點為止。

#include #include using namespace std;

// 輸出迷宮陣列

void printmaze(char maze[12])

cout << "\n";

}// 檢測當前位置是否有效

bool vaild(char maze[12], int row, int col)

// 進行遞迴查詢

void findway(char maze[12], int row, int col) ;

static const int vertical[4] = ;

static const int finalcol = 11, finalrow = 4;

maze[row][col] = 'x'; // 標記當前位置

if (row == finalrow && col == finalcol)

else

}maze[row][col] = '.'; // 還原陣列狀態

}int main() ,,,

,,,,

,,,,

}; // 迷宮陣列

printmaze(maze); // 展示迷宮

findway(maze, 2, 0);

return 0;

}

走迷宮問題

1.這個是迷宮,1代表牆,0代表通路。1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 0 0 0...

走迷宮問題

給一迷宮表個和入口位置,找出並列印出從入口到出口的路徑 注意 迷宮 我們可以用乙個二維陣列來表示,但是如果用二維陣列表示,將唯一固定,迷宮趣味性大大降低並 長度增大 因此,我們最好是將迷宮 儲存在一檔案中,在實現時再從檔案中讀取 採用模板來實現可實現復用性 1 我們可沿著入口逐一方向進行試探,若有通...

走迷宮問題

乙個10 10的迷宮,每乙個格仔裡面存0或者1,0代表可以走,1代表障礙。輸入值 起始座標 輸出值 能否達到設定的目標座標點 bool型變數,1或者0 1 include 2 include 3 4 define ex 2 5 define ey 2 6bool findpath false 7 i...