看代码:
def fun(a, b, c):
if a <= 0 or b <= 0 or c <= 0:
return 1
if a > 20 or b > 20 or c > 20:
return fun(20, 20, 20)
if a < b < c:
return fun(a, b, c - 1) + fun(a, b - 1, c - 1) + fun(a, b - 1, c)
if not Memory[a][b][c]:
value = fun(a - 1, b, c) + fun(a - 1, b - 1, c) + fun(a - 1, b, c - 1) - fun(a - 1, b - 1, c - 1)
Memory[a][b][c] = value
return Memory[a][b][c]
data = []
Memory = [[[None for x in range(21)] for i in range(21)] for j in range(21)]
a = 1
while True:
a, b, c = map(int, input().split())
if a < 0: break
data.append((a, b, c))
for i in data:
print(f"w({i[0]}, {i[1]}, {i[2]}) =", fun(i[0], i[1], i[2]))
全部超时