1. 程式人生 > 其它 >藍橋杯:迷宮————Python

藍橋杯:迷宮————Python

技術標籤:藍橋杯python

題目
X星球的一處迷宮遊樂場建在某個小山坡上。
它是由10x10相互連通的小房間組成的。

房間的地板上寫著一個很大的字母。
我們假設玩家是面朝上坡的方向站立,則:
L表示走到左邊的房間,
R表示走到右邊的房間,
U表示走到上坡方向的房間,
D表示走到下坡方向的房間。

X星球的居民有點懶,不願意費力思考。
他們更喜歡玩運氣類的遊戲。這個遊戲也是如此!

開始的時候,直升機把100名玩家放入一個個小房間內。
玩家一定要按照地上的字母移動。

迷宮地圖如下:

UDDLUULRUL
UURLLLRRRU
RRUURLDLRD
RUDDDDUUUU
URUDLLRRUU
DURLRLDLRL

ULLURLLRDU
RDLULLRDDD
UUDDUDUDLL
ULRDLUURRR

請你計算一下,最後,有多少玩家會走出迷宮?
而不是在裡邊兜圈子。

請提交該整數,表示走出迷宮的玩家數目,不要填寫任何多餘的內容。

如果你還沒明白遊戲規則,可以參看一個簡化的4x4迷宮的解說圖:


Code

data = [
            ['U', 'D', 'D', 'L', 'U', 'U', 'L', 'R', 'U', 'L'],
            ['U', 'U', 'R', 'L', 'L', 'L', 'R', 'R', 'R', 'U'],
            ['R'
, 'R', 'U', 'U', 'R', 'L', 'D', 'L', 'R', 'D'], ['R', 'U', 'D', 'D', 'D', 'D', 'U', 'U', 'U', 'U'], ['U', 'R', 'U', 'D', 'L', 'L', 'R', 'R', 'U', 'U'], ['D', 'U', 'R', 'L', 'R', 'L', 'D', 'L', 'R', 'L'], ['U', 'L', 'L', 'U', 'R', 'L', 'L', 'R', 'D', 'U'
], ['R', 'D', 'L', 'U', 'L', 'L', 'R', 'D', 'D', 'D'], ['U', 'U', 'D', 'D', 'U', 'D', 'U', 'D', 'L', 'L'], ['U', 'L', 'R', 'D', 'L', 'U', 'U', 'R', 'R', 'R'] ] def func(x, y, a): if x < 0 or x > 9 or y < 0 or y > 9: return True elif a > 100: return False if data[x][y] == 'U': return func(x - 1, y, a + 1) elif data[x][y] == 'D': return func(x + 1, y, a + 1) elif data[x][y] == 'R': return func(x, y + 1, a + 1) else: return func(x, y - 1, a + 1) res = 0 for x in range(10): for y in range(10): res += func(x, y, 0) print(res)

注意:
程式碼中的a是用來計算次數的,如果不加入a的話會使迭代次數超出限制,無法計算。


Answer

  • 31