四项一起对得上吗
运行下面这段程序:
def fib_tab(n):
if n < 2:
return n
dp = [0] * (n + 1)
dp[1] = 1
for i in range(2, n + 1):
dp[i] = dp[i - 1] + dp[i - 2]
return dp[n]
def climb(n):
dp = [0] * (n + 1)
dp[0] = 1
for i in range(1, n + 1):
dp[i] = dp[i - 1]
if i >= 2:
dp[i] += dp[i - 2]
return dp
def rob(a):
dp = [0] * (len(a) + 1)
if a:
dp[1] = a[0]
for i in range(2, len(a) + 1):
dp[i] = max(dp[i - 1], dp[i - 2] + a[i - 1])
return dp
def max_sub(a):
best = a[0]
cur = a[0]
for x in a[1:]:
cur = max(x, cur + x)
best = max(best, cur)
return best
ok = (fib_tab(12) == 144
and climb(10)[10] == 89
and rob([2, 7, 9, 3, 1])[-1] == 12
and max_sub([-2, 1, -3, 4, -1, 2, 1, -5, 4]) == 6)
print(ok)
全部评论