OJ 4127 迷宮問題 遞迴輸出路徑

2021-08-17 04:48:07 字數 1473 閱讀 5295

定義乙個二維陣列: 

int maze[5][5] = ;

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

輸入乙個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

樣例輸出
(0, 0)

(1, 0)

(2, 0)

(2, 1)

(2, 2)

(2, 3)

(2, 4)

(3, 4)

(4, 4)

#include #include "cstring"

#include #include "iomanip"

#include "vector"

#include "cmath"

#include "stack"

#include "algorithm"

#include #include "map"

#include "queue"

struct node

node (int xx,int yy ,int stepp)

};void prri(node n[100][100],int x,int y)

prri(n,n[x][y].x,n[x][y].y);

printf("(%d, %d)\n",n[x][y].x,n[x][y].y);

}using namespace std;

int main()

; node nn[100][100];

nn[0][0].x=0;

nn[0][0].y=0;

int a[100][100]=;

int min=3232323;

for(int i=0;i>a[i][j];}}

queue q;

node t=node(0,0,1);

q.push(t);

while(!q.empty())

if(visit[rx][ry]==1)

continue;

visit[rx][ry]=1;

for(int x=0;xfor(int y=0;y}

if((x==rx &&y==ry-1)||(x==rx&&y==ry+1))}}

}prri(nn ,4,4);

cout<<"(4, 4)";

return 0;

}

路徑用乙個二維自定義結構體node儲存,node[x][y]儲存(xx,yy)上乙個點位置,然後從最後乙個點進入遞迴,要輸出當前點時候要在進入node[x][y]的上乙個點,直到(0,0)停止。那麼就能逆序輸出啦

華為OJ 迷宮問題

定義乙個二維陣列n m 其中2 n 10 2 m 10 如5 5陣列下所示 int maze 5 5 它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從左上角到右下角的最短路線。入口點為 0,0 既第一空格是可以走的路。input 乙個n m的二...

遞迴迷宮問題

這裡我們有乙個地圖 用二維陣列表示 小球位於地圖的起始點 也就是map 1 1 這個位置 然後小球通過進行迴圈判斷小球當前位置的上下左右是否能走,如果能走則在走之前把之前的位置標記為2,代表有路可走,如果上下左右都沒有路則把當前位置標記為3,代表無路可走,直到找到地圖的目的地,也就是map 6 5 ...

遞迴迷宮問題

直到6,5這個小球標誌的點 package com.demo public class losepath 左右全部置為1 for int i 0 i 8 i 設定擋板 map 3 1 1 map 3 2 1 system.out.println 小球開始的地圖 遍歷輸出一把 for int i 0 ...