迷宮問題 類比隊列 廣度優先搜尋

來源:互聯網
上載者:User

標籤:des   style   blog   ar   io   color   os   sp   for   

Description

定義一個二維數組:

int maze[5][5] = {
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,
};

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

Input

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

Output

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

Sample Input

0 1 0 0 00 1 0 1 00 0 0 0 00 1 1 1 00 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 <cstdio>#include <cmath>#include <cstring>#include <ctime>#include <iostream>#include <algorithm>#include <set>#include <vector>#include <sstream>#include <queue>#include <typeinfo>#include <fstream>typedef long long ll;using namespace std;//freopen("D.in","r",stdin);//freopen("D.out","w",stdout);#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)#define maxn 100const int inf=0x7fffffff;   //無限大struct dota{    int x;    int y;    int pre;} haha[1000];int dx[4]={1,-1,0,0};int dy[4]={0,0,1,-1};//int dp[10][10];int vis[50][50];void print(int x){    if(haha[x].pre!=-1)    {        print(haha[x].pre);        printf("(%d, %d)\n",haha[x].x,haha[x].y);    }}void bfs(int x,int y){    haha[0].x=x;    haha[0].y=y;    haha[0].pre=-1;    int start=0;    int fina=1;    int m=1;    while(start<fina)    {        for(int i=0;i<4;i++)        {            int a=haha[start].x+dx[i];            int b=haha[start].y+dy[i];            if(a<0||a>4)                continue;            if(b<0||b>4)                continue;            if(vis[a][b]==1)                continue;            fina++;            vis[a][b]=1;            haha[m].x=a;            haha[m].y=b;            haha[m++].pre=start;            if(a==4&&b==4)            {                print(start);            }        }        start++;    }}int main(){    for(int i=0;i<5;i++)        for(int j=0;j<5;j++)            {                cin>>vis[i][j];            }    printf("(0, 0)\n");    bfs(0,0);    printf("(4, 4)\n");    return 0;}

 

迷宮問題 類比隊列 廣度優先搜尋

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.