迷宮問題(深搜

2021-07-10 04:10:12 字數 1436 閱讀 5063



d - 迷宮問題

crawling in process...

crawling failed

time limit:1000msmemory limit:65536kb64bit io format:%i64d & %i64u

submit

status

description

定義乙個二維陣列:

int maze[5][5] = ;

它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從左上角到右下角的最短路線。

input

乙個5 × 5的二維陣列,表示乙個迷宮。資料保證有唯一解。

output

左上角到右下角的最短路徑,格式如樣例所示。

sample input

0 1 0 0 0

0 1 0 1 0

0 0 0 0 0

0 1 1 1 0

0 0 0 1 0

sample output

(0, 0)

(1, 0)

(2, 0)

(2, 1)

(2, 2)

(2, 3)

(2, 4)

(3, 4)

(4, 4)

題解
用陣列記錄已經走過的點,並且標記已經走過的路,但注意當所選的那條不能到達時 要向上找點,此時便要把之前已經記錄的點去掉;
#include #include#include#include#include#include#include#include
using namespace std;
int a[5][5];//記錄迷宮

int point[25],point1[25];//記錄走過的點

int dx[4]=;

int dy[4]=;

int i,j,ans;

void dfs(int n,int m)//輸入 初始位置

break;

}else

dfs(nx,ny);

a[nx][ny]=0;//當所選的路徑不能到達終點,返回上一次的位置

point[ans] = nx;//去掉之前的記錄的點

point1[ans] = ny;

ans--;

}

}

}

int main()

}printf("(0, 0)\n");

dfs(0,0);

return 0;

}

迷宮問題 深搜

簡單的實現了迷宮 深搜 並非是最短路徑 我們規定 1 為牆,0 為通路。為了避免越界,在迷宮外面加了一堵牆。當然也可以不需要牆。實現很簡單,用乙個陣列棧儲存已訪問過的位置,用四個if語句判斷東南西北四個方向能否走通。若往前已無路可走便退回上乙個位置。具體實現如下 include include de...

迷宮問題(深搜 回溯)

time limit 1 sec memory limit 128 mb 64bit io format lld submit status web board 設有乙個n n 2 n 10 方格的迷宮,入口和出口分別在左上角和右上角。迷宮格仔中分別放0和1,0表示可通,1表示不能,入口和出口處肯定...

迷宮問題(廣搜與深搜)

定義乙個二維陣列 int maze 5 5 它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從左上角到右下角的最短路線。input 乙個5 5的二維陣列,表示乙個迷宮。資料保證有唯一解。output 左上角到右下角的最短路徑,格式如樣例所示。sa...