資源簡(jiǎn)介
對(duì)于一個(gè)給定的迷宮,用0、1分別表示迷宮中的通路和障礙。再分別給定你,入口和出口的坐標(biāo),求出一條從入口到出口的通路,或得不到通路。
代碼片段和文件信息
#include
struct?elem{
int??ord;???//通道塊在路徑上的“序號(hào)“?
int??xy;???//此通道塊?在迷宮中的坐標(biāo)位置?
int??di;???//從此通道塊走向下一通道的方向?
};????????????//棧的元素類型?
int?main()
{
struct?elem?s[10000]e;???//等價(jià)于建立一個(gè)站棧?//用來存儲(chǔ)迷宮的路徑?在這里用數(shù)組來實(shí)現(xiàn)棧的操作
int?kt;?????????????????//?k?用來記錄棧的尾指針指向的位置,t用來記錄走出迷宮的路徑當(dāng)前長(zhǎng)度
int?curpos[2]cursteptu[100][100]; //curpos[0]和curpos[1]用分別來存儲(chǔ)當(dāng)前的x值和y值。整個(gè)迷宮是用二維數(shù)組tu[][]來存放的
int?nmenemsnsmij;
while(scanf(“%d%d“&n&m)n)??//迷宮的大小,即n行,m列?
{?????????????????????????
for(i=0;i for(j=0;j scanf(“%d“&tu[i][j]);?//輸入迷宮,1為不能通過,0為可以通過?
???? scanf(“%d%d“&sn&sm);??//輸入起始的位置(sn,sm)?
???? scanf(“%d%d“&en&em);??//輸入終點(diǎn)(enem)?
k=0;?? //初始化棧s?初始化記錄迷宮的序列?
curpos[0]=sn;curpos[1]=sm;??//設(shè)定當(dāng)前位置為“入口位置“?
curstep=1; //探索第一步?
do{
if(tu[curpos[0]][curpos[1]]==0)??//當(dāng)前位置是可通的即是未曾走過的通道塊?
{
tu[curpos[0]][curpos[1]]=1;??//留下足跡,并沒有把這一通道塊標(biāo)記為無法通過
e.ord=curstep;
評(píng)論
共有 條評(píng)論