定義乙個二維陣列:
int maze[5][5] = ;
它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從左上角到右下角的最短路線。
input
乙個5 × 5的二維陣列,表示乙個迷宮。資料保證有唯一解。
output
左上角到右下角的最短路徑,格式如樣例所示。
sample input
0 1 0 0 0sample output0 1 0 1 0
0 0 0 0 0
0 1 1 1 0
0 0 0 1 0
(0, 0)(1, 0)
(2, 0)
(2, 1)
(2, 2)
(2, 3)
(2, 4)
(3, 4)
(4, 4)
#include#include#include#include#includeusing namespace std;
int map[10][10];
int min = 99999;
int vis[10][10];
int dir[4][2] = ;
struct node
a,tmp[100];
stacks;
int m = 0;
void dfs(int x, int y, int step)
for(int i = m-1; i >= 0; i--)
return ;
}
}for(int i = 0; i < 4; i++) }
}int main() }
vis[0][0] = 1;
dfs(0,0,0) ;
// cout << min << endl;
printf("(0, 0)\n");
for(int i = min - 1; i >= 0; i--)
cout << "(" << tmp[i].x << ", " << tmp[i].y << ")"<< endl;
return 0;
}
以下bfs只求出步數
#include#include#include#include#includeusing namespace std;
struct node
node(int _x, int _y, int _step) : x(_x),y(_y),step(_step) {} //建構函式
};int map[10][10];
//int min = 9999;
int vis[10][10];
int dir[4][2] = ;
int bfs()
q.pop();
vis[now.x][now.y] = 0;
for(int i = 0; i < 4; i++)
} }}
int main() }
cout << bfs() << endl;
return 0;
}
poj 迷宮問題 簡單題)
迷宮問題 time limit 1000ms memory limit 65536k total submissions 10318 accepted 6124 description 定義乙個二維陣列 int maze 5 5 它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走...
迷宮問題(遞迴)筆記
上圖是乙個 8 行 7 列的迷宮,紅色方格表示牆,不能走,目的是從某一處起點開始讓小球最終走到右下角的位置 說明 map 表示地圖 i,j 表示從地圖的哪個位置開始出發 1,1 如果小球能到 map 6 5 位置,則說明通路找到.約定 當 map i j 為 0 表示該點沒有走過 當為 1 表示牆 ...
Reader and Writer問題 寫者優先
經典作業系統問題,中有注釋,不懂的函式可以查閱msdn reader and writer 問題,寫者優先,併發讀,互斥寫 include include include include include include include volatile long cntr,cntw 當前在讀的rea...