2019年9月6日 小米筆試題

迴文鏈表

# 題目描述:
# 請判斷一個鏈表是否爲迴文鏈表
# 輸入: 1->2->2->1 輸出: True

# 樣例輸入
# 1 2 2 1
# 樣例輸出
# True

d = list(map(int, input().split()))
if d == d[::-1]:
    print("True")
else:
    print("False")
複製代碼

吃薯片

# 題目描述:
# 如今有一盒薯片,小米和大米兩我的想要吃薯片。每次只能從薯片盒兩端拿出一片薯片吃掉,每次拿取薯片吃掉能夠得到快樂值a[i], i表明薯片在盒子中的位置。小米先拿,而後大米再從剩餘薯片的兩端再次取出一片薯片吃掉,····,依次類推直至薯片盒空掉。最終快樂值最大的人獲勝。給定一個表示薯片快樂值的數組,預測小米是否會成爲贏家(兩人快樂值相同時小米贏),假設小米和大米都足夠聰明。

# 輸入
# 數組a表明薯片盒內薯片的快樂值
# 輸出
# Yes/No

# Yes 表明小米是快樂值最大的
# No 表明小米不是快樂值最大的那個

# 樣例輸入
# 1 4 2
# 樣例輸出
# No

d = list(map(int, input().split()))

def eat(n, nums):
    m = len(nums)
    dp = [[0] * m for j in range(m)]
    for i in range(m):
        dp[i][i] = nums[i]
            
    for i in reversed(range(0, n)):
        for j in range(i + 1, m):
            dp[i][j] = sum(nums[i:j+1]) - min(dp[i+1][j], dp[i][j-1])
            
    total_sum = sum(nums[0:n])   
        
    return dp[0][n-1], total_sum - dp[0][-1]

xiaomi, dami = eat(len(d), d)
    
if xiaomi>=dami:
    print("Yes")
else:
    print("No")
複製代碼
相關文章
相關標籤/搜索