給一迷宮表個和入口位置,找出並列印出從入口到出口的路徑
注意:迷宮**我們可以用乙個二維陣列來表示,但是如果用二維陣列表示,將唯一固定,迷宮趣味性大大降低並**長度增大;因此,我們最好是將迷宮**儲存在一檔案中,在實現時再從檔案中讀取;
採用模板來實現可實現復用性;
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...
走迷宮問題
如下由 和 符號組成的圖案表示乙個迷宮,在這個迷宮中,表示可以走的路徑,可以通過,而 表示迷宮的牆,是不能穿過的。我們的目的就是要從迷宮的起點走到終點,找出一條合適的路徑,當然最短路徑最好。站在迷宮中的乙個位置上,環顧四周,總共有四個方向可以選擇,而這每乙個方向都有可能成功,同樣也有可能失敗。在成功...