騰訊筆試 密室探險

2021-09-26 08:58:13 字數 1302 閱讀 2943

題目描述:小q在假期的時候去乙個密室探險,這個密室可以看做乙個n*3的格仔,小q最開始可以選擇第一行的任意乙個格仔進入,此後的每一步,他可以選擇下一行的當前位置或左側一格或右側一格。簡單地說,假設小q的當前位置為(x,y),那麼他下一步可以前進至(x+1,y-1),(x+1,y)或(x+1,y+1),但他不能走出格仔。每個格仔都有乙個數字,代表走到該格仔可以獲得的分數。但密室中有一些魔法格仔,它們的數字為0,當小q經過魔法格仔後。他之後獲得的分數就會變成相反數,分數可多次翻轉,請問小q到達密室最後一行時,最多可以獲得多少分?

1<=n<=100000

-100000<=m<=100000

示例:輸入:

61 2 3

8 9 10

5 0 5

-9 -8 -10

0 1 2

5 4 6

輸出:27

當時看錯題了,以為遇到0,之前的分數變成相反數,這道題還是遞迴,遇到0後變成求最小。

import sys

def solution(arr, x, y, flag):

num = 0

if y < 0 or y > 2 or x >= len(arr):

return 0

if arr[x][y] == 0:

flag = - flag

else:

num += flag * arr[x][y]

if flag:

num += max(solution(arr, x + 1, y - 1, flag), solution(arr, x + 1, y, flag), solution(arr, x + 1, y + 1, flag))

else:

num += min(solution(arr, x + 1, y - 1, flag), solution(arr, x + 1, y, flag), solution(arr, x + 1, y + 1, flag))

return num

loop = int(sys.stdin.readline().strip())

arr =

for i in range(loop):

n = [int(x) for x in sys.stdin.readline().strip().split()]

flag = 1

num = max(solution(arr, 0, 0, flag), solution(arr, 0, 1, flag), solution(arr, 0, 2, flag))

print(num)

騰訊筆試記

這是乙個千載難逢的機會,這是乙個程式愛好者之間的擂台,這是一次千里挑一的冒險,這是乙個走向地獄與天堂的路口,這是一場充滿著變數的遊戲,歸根結底,這是一次筆試 筆試嘛,考的是什麼?是知識,是細心,是心理素質。從今天凌晨2點27分收到筆試的簡訊通知,心裡著實開始緊張了,我的心裡素質一向不太發達,尤其是面...

騰訊筆試總結

1 二叉樹遍歷例如 先序 中序 後序 2元件可靠性 3記憶體分配 最佳,最差,迴圈等 4命令 chown chmod 5那種方案是安全的。作業系統。程序,可用資源數,最大分配,已經分配 6測試用例 7最短路徑 8位址轉換 9sizeof 10雜湊函式,雜湊函式,衝突探測 11risc 12有限自動機...

騰訊筆試題

一.單選題 每題4 分,15題,共60分 1.考慮函式原型void hello int a,int b 7,char pszc 下面的函式呼叫鐘,屬於不合法呼叫的是 a hello 5 b.hello 5,8 c.hello 6,d.hello 0,0,2.下面有關過載函式的說法中正確的是 a.過載...