#include
#include
struct pos
;int _col{};
pos(int row, int col) :_row(row)
, _col(col)
pos()
};std::stacks;
bool checkisaccess(int* a, int row_size, int col_size, pos cur)
//列座標不合法
if (cur._col <0 || cur._col>=col_size)
//走過路
if (a[cur._row * col_size + cur._col] >0)
return true;
}bool check_pos(int* maze, int rows, int cols, pos entry)
//試探上面
next._row–;
if (checkisaccess(maze,rows,cols, next))
//試探下面
next = cur;
next._row++;
if (checkisaccess(maze, rows, cols, next))
//試探左面
next = cur;
next._col–; //列開始減
if (checkisaccess(maze, rows, cols, next))
//試探右面
next = cur;
next._col++;
if (checkisaccess(maze, rows, cols, next))
//回溯,如果其餘三個方向均不跳出,則表示無通路
maze[cur._row * cols + cur._col] = 3;//將走過的點標記為3,也可以不標記
//如果此節點無路,就刪除節點
s.pop();
}return false;
}int main()
;bool flag = check_pos((int*)map, 10, 10, pos(1, 0));
}總結:利用棧的思想,去遍歷每個座標,可以走的座標放入棧中,然後每個取遍歷,直到此座標不能走位置,若不能走,就把此座標刪除掉,然後彈出下乙個座標即可
利用深度搜尋法解決八皇后問題
八皇后問題每行必須有乙個皇后,所以,對棋盤深蒐時,第乙個皇后的位置不妨設為第一行,這樣只對第一行進行搜尋,同理,第二個皇后不妨設為第二行,以此類推。下面附我的 includeusing namespace std struct node1 棋盤模擬,不可以放皇后的地方值為0,可以為1 struct ...
利用深度優先搜尋(dfs)來解決迷宮問題
1 從圖中某個初始頂點v出發,首先訪問初始頂點v。2 然後依次從v的未被訪問的鄰接點w,再從w出發進行深度優先遍歷,直到圖中所有與v有路徑相通的的頂點都被訪問過為止。解決問題 1 如何確定乙個頂點是否訪問過?設定乙個visited全域性陣列,visited i 0表示頂點i沒有訪問 visited ...
利用棧解決迷宮問題
迷宮問題 如圖所示 從左上角出發,然後從下面出來。利用檔案讀寫的方式,讀取迷宮,然後利用棧,進行搜尋是否能夠找到出口,上下左右四個方向進行判斷,如果找不到,就回溯。pragma once pragma once include include define n 10 struct position ...