題目描述:小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.過載...