【題目描述】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...