實驗三的迷宮問題

2021-07-08 16:23:46 字數 1839 閱讀 8574

先上**

#include

#include

#include

#define size 7

#define max 1024

//typedef int elemtype;

typedef

struct

//路徑方塊查詢方向的資料結構

direction;

typedef

struct

//路徑方塊的資料結構

selemtype;

typedef

struct sequenstack

sequenstack;

sequenstack *s;

typedef selemtype elemtype;

sequenstack *init_sequenstack()//初始化棧

int push_sequenstack(sequenstack *s, elemtype x)//入棧

s->top++;

s->data[s->top] = x;

return

0;//入棧成功返回0;

}int sequenstack_empty(sequenstack *s)//棧判空

int gettop_sequenstack(sequenstack *s,elemtype *x)//取棧頂元素

else

}int pop_sequenstack(sequenstack *s, elemtype *x)//出棧

else

}int path(sequenstack *s,int maze[size][size],direction move[5])

temp.row=i;

temp.column=j;

temp.direction=1;

push_sequenstack(s,temp);

x=i;

y=j;

maze[x][y]=-1;

if(x==size-2&&y==size-2)//判斷當前方塊是否為出口

else

}else

//不可通過,查詢下乙個方向

}//while結束

if(d==5&&!sequenstack_empty(s))

}return0;}

void main()

}for(i=1;i1;i++)

}for(i=0;ifor(j=0;jif(maze[i][j]==1)

printf("■");

else

printf("□");

}printf("\n");

}printf("\n");

direction move[5]=,,,,};

s=init_sequenstack();

a=path(s,maze,move);

for(i=0;ifor(j=0;jif(i==1&&j==1)

printf("△");

else

if(maze[i][j]==1)

printf("■");

else

if(maze[i][j]==-1)

printf("△");

else

printf("□");

}printf("\n");

}if(a==1)

printf("成功找出\n");

else

printf("沒有出路\n");

}

這是實驗我是自己把它設定為隨機數的形式,(自己輸數太麻煩),主要函式也就是書上的,主要是把握棧的使用。。

回溯問題三 迷宮問題

題意 0 0 0 0 1 1 0 0 0 1 1 0 1 0 1 1 0 1 1 1 1 0 0 1 1 上面矩陣表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,現在編寫程式從 0,0 開始走從最後一行有出口處走出 解題方法 回溯法,與全排列 地圖塗色如出一轍,回溯與遞迴聯絡十分緊密,遞迴的過程包...

三維迷宮問題

通過該圖可以清楚的知道,迷宮的路徑可能有多個,多條,廣度優先總是從距離近到遠進行遍歷,所以可以達到搜尋出最短路徑。3維空間 迷宮問題 int go 3 int maze 30 50 50 bool mark 30 50 50 struct n path 333 void print3 int i 當...

迷宮問題 資料結構實驗報告

資料結構實驗報告 實驗名稱 實驗二 迷宮問題 學號 姓名 gnosed 實驗日期 2017.10.23 一 實驗目的 1 了解回溯法在求解迷宮問題中的應用 2 進一步掌握棧的使用 二 實驗具體內容 1 實驗題目1 1 題目 用回溯法求解迷宮問題,可以用乙個棧儲存探索的序列。並且在該迷宮的行走中,站在...