先上**
#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 題目 用回溯法求解迷宮問題,可以用乙個棧儲存探索的序列。並且在該迷宮的行走中,站在...