走迷宮問題

2021-08-15 12:18:07 字數 2476 閱讀 8925

給一迷宮表個和入口位置,找出並列印出從入口到出口的路徑

注意:迷宮**我們可以用乙個二維陣列來表示,但是如果用二維陣列表示,將唯一固定,迷宮趣味性大大降低並**長度增大;因此,我們最好是將迷宮**儲存在一檔案中,在實現時再從檔案中讀取;

採用模板來實現可實現復用性;

1、我們可沿著入口逐一方向進行試探,若有通則繼續前進,全不通,回溯法則回溯,遞迴法則到達遞迴終止條件。

2、採用棧來記錄走過的路徑

maze.h

#pragma once

#include using namespace std;

#include #include struct pos //放置位置

int _row;

int _col;

};template class maze}}

}void print() //列印迷宮表

cout << endl;

}cout << endl;

}bool checkpass(pos& next) //1、判斷是否為通2、判斷位置是否合法

return false;

}bool getmazepath(pos entry) //走迷宮

//探測上

next._row -= 1;

if (checkpass(next))

//探測下

next = cur;

next._row += 1;

if (checkpass(next))

//探測左

next = cur;

next._col -= 1;

if (checkpass(next))

if (next._row == m - 1)

//均不符合

pos pos = path.top();

_array[pos._row][pos._col] = 3;

path.pop();

}return false;

}private:

size_t _array[m][n];

};

#include #include "maze.h"

using namespace std;

int main()

; maze<10, 10> a;

a.print();

a.getmazepath(entry);

a.print();

system("pause");

return 0;

}

maze.h

#pragma once

#include using namespace std;

#include #include struct pos //放置位置

int _row;

int _col;

};template class maze}}

}void print() //列印迷宮表

cout << endl;

}cout << endl;

}bool checkpass(pos& next) //1、判斷是否為通2、判斷位置是否合法

return false;

}bool getmazepathr(pos cur) //走迷宮

pos next = cur;

_array[next._row][next._col] = 2;

//探測右

next._col += 1;

if (checkpass(next))

}//探測上

next = cur;

next._row -= 1;

if (checkpass(next))

}//探測下

next = cur;

next._row += 1;

if (checkpass(next))

}//探測左

next = cur;

next._col -= 1;

if (checkpass(next))

}return false;

}private:

size_t _array[m][n];

};

#include #include "maze.h"

using namespace std;

int main()

; maze<10, 10> a;

a.print();

a.getmazepath(entry);

a.print();

system("pause");

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...

走迷宮問題

乙個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...

走迷宮問題

如下由 和 符號組成的圖案表示乙個迷宮,在這個迷宮中,表示可以走的路徑,可以通過,而 表示迷宮的牆,是不能穿過的。我們的目的就是要從迷宮的起點走到終點,找出一條合適的路徑,當然最短路徑最好。站在迷宮中的乙個位置上,環顧四周,總共有四個方向可以選擇,而這每乙個方向都有可能成功,同樣也有可能失敗。在成功...