藍橋杯之迷宮改編

2021-10-25 08:54:46 字數 1527 閱讀 9797

【題目描述】x星球的一處迷宮遊樂場建在某個小山坡上。它是由nxn相互連通的小房間組成的。房間的地板上寫著乙個很大的字母。我們假設玩家是面朝上坡的方向站立,則:l表示走到左邊的房間,r表示走到右邊的房間,u表示走到上坡方向的房間,d表示走到下坡方向的房間。x星球的居民有點懶,不願意費力思考。他們更喜歡玩運氣類的遊戲。這個遊戲也是如此!開始的時候,***把nxn名玩家放入乙個個小房間內。玩家一定要按照地上的字母移動。請你計算一下,最後,有多少玩家會走出迷宮?而不是在裡邊兜圈子。

【樣例輸入】

10uddluulrul

uurlllrrru

rruurldlrd

rudddduuuu

urudllrruu

durlrldlrl

ullurllrdu

rdlullrddd

uuddududll

ulrdluurrr

【樣例輸出】

31【樣例解釋】100個人最終由31個人能夠逃迷宮。

樣例規模:1<=n<=1000;

#include

using

namespace std;

const

int n=

1005

;char arr[n]

[n];

int vis[n]

[n];

int flag[n]

[n];

int vis2[n]

[n];

int n;

int res=0;

bool

fun(

int x,

int y)

return

false;}

void

init()

}}void

dfs(

int x,

int y,

bool

& fl)

//如果(x,y)在之前的計算中已經得到不可以逃跑出去的那麼直接返回

if(vis[x]

[y])

vis[x]

[y]=1;

vis2[x]

[y]=1;

flag[x]

[y]=1;

if(arr[x]

[y]==

'l')

dfs(x,y-

1,fl)

;else

if(arr[x]

[y]==

'r')

dfs(x,y+

1,fl)

;else

if(arr[x]

[y]==

'u')

dfs(x-

1,y,fl)

;else

dfs(x+

1,y,fl);if

(!fl)

}int

main()

}for

(int i=

1;i<=n;i++)}

cout

}

藍橋杯之迷宮

請提交該整數,表示走出迷宮的玩家數目,不要填寫任何多餘的內容。思路 本來想的是類似求解迷宮問題的深搜,發現它無法遍歷每個點,還不如兩層迴圈來得快,判斷每個點,然後用深搜,每走一步標記陣列對應值改變為 1,超出邊界符合題意,移動到標記陣列值為 1 則表示兜圈子,直到所有點判斷結束。include us...

藍橋杯之迷宮 python解法

x星球的一處迷宮遊樂場建在某個小山坡上。它是由10x10相互連通的小房間組成的。房間的地板上寫著乙個很大的字母。我們假設玩家是面朝上坡的方向站立,則 l表示走到左邊的房間,r表示走到右邊的房間,u表示走到上坡方向的房間,d表示走到下坡方向的房間。x星球的居民有點懶,不願意費力思考。他們更喜歡玩運氣類...

藍橋杯 走迷宮

給乙個n行m列的2維的迷宮,s 表示迷宮額起點,t 表示迷宮的終點,表示不能通過的點,表示可以通過的點。你需要從 s 出發走到 t 每次只能上下左右走動,並且只能進入能通過的點,每個點只能通過一次。現在要求你求出有多少種通過迷宮的的方案。第一行輸入n,m 1 n,m 10 表示迷宮大小。接下來輸入n...