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 00 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...