迷宮是實驗心理學中乙個古典問題。以乙個n*m的長方陣表示迷宮,0和1分別表示迷宮中的通路和障礙。入口在左上方(1,1)處,出口在右下方(n,m)處。
要求求出從迷宮入口到出口有無通路的最短路徑。
生成迷宮(呼叫的c語言中的srand和rand函式):
#include #include #include #include #include #include using namespace std;迷宮搜尋:(bfs)#define max 1000
int map[max][max];
void createmap(int n, int m) //1代表牆壁 0代表通路
}}int main()
else}}
return 0;
}
路徑標記使用了api:setconsoletextattribute
#include #include #include #include #include #include using namespace std;測試程式(呼叫了bat,拒絕手動,主要還是懶=。=)#define max 1000
#define turn 8
typedef struct point
point;
const int moves[turn][2] = , , , , , , , };
int map[max][max];
bool visited[max][max];
int color[max][max];
int n, m, ans;
queueq;
point back[max][max], path[max];
void loadmap()
} cin.close();
}void showmap()
else
} }}
void bfs(int x, int y)
point pre, next;
pre.x = x;
pre.y = y;
pre.cnt = 0;
visited[pre.x][pre.y] = true;
q.push(pre);
while(!q.empty())
for(int i = 0; i < turn; i++)
}} for(int i = ans; i >= 0; i--) }
void showsetp()
int count = 0;
for(int i = 1; i <= n; i++)
else
}cout << endl;
count++; }}
/*void bcaktrack(int x, int y)
else
}*/
int main()
else
return 0;
}
monitoring.bat
@shift@echo off
setlocal
mode con: cols=40 lines=15
color 0a
title 迷宮 by_n3verl4nd
:start
for /l %%a in (
15,-1,0
) do (
echo.
echo.
echo.
echo.
echo ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
echo ☆ 每隔15秒自動啟動迷宮程式 ☆
echo ☆ 還剩餘 %%a 秒 ☆
話說,記錄這張等了好久的說。結點一多,dfs的效率就降低了。
迷宮問題 dfs bfs
從迷宮入口點 1,1 出發,出口點 m,n 1.求所有路徑條數 2.求最短路徑條數 3.輸出一條最短路徑 題解 向四周搜尋,記下所有一步能到達的座標點 然後依次再從這些點出發,再記下所有一步能到達的座標點,依此類推,直到到達迷宮的出口點 m,n 為止,然後從出口點沿搜尋路徑回溯直至入口。這樣就找到了...
dfs bfs 逃離迷宮
給定乙個m n m行,n列 的迷宮,迷宮中有兩個位置,gloria想從迷宮的乙個位置走到另外乙個位置,當然迷宮中有些地方是空地,gloria可以穿越,有些地方是障礙,她必須繞行,從迷宮的乙個位置,只能走到與它相鄰的4個位置中,當然在行走過程中,gloria不能走到迷宮外面去。令人頭痛的是,glori...
簡單迷宮(DFS BFS)
ps 不得不說自己太菜了,dfs和bfs的模板題都搞了好幾個小時 有乙個 10 x 10 的迷宮,起點是 s 終點是 e 牆是 道路是空格。乙個機械人從起點走到終點。當機械人走到乙個通道塊,前面已經沒有路可走時,它會轉向到當前面向的右手方向繼續走。如果機械人能夠過,則留下足跡 如果走不通,則留下標記...