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")
复制代码
相关文章
相关标签/搜索