Mandel520 @ 2022-01-17 18:40:41
以下是我写的python程序, 可过样例, 但一交上去就全部WA了, 恳请各位大佬解答
ans = [[[0] * 25 for i in range(25)] for j in range(25)] #储存答案的数组
def ans_recur(x, y, z): #递归函数
if x <= 0 or y <= 0 or z <= 0: #三个数中任意一个小于0, return 1
return 1
if x > 20 or y > 20 or z > 20: #三个数中任意一个小于20, 则将三个数全都设为20
x, y, z = 20, 20, 20
if ans[x][y][z] > 0: #如果之前的运算中已经求出了答案, 直接输出
return ans[x][y][z]
if x < y and y < z: #根据题目中的公式进行计算
ans[x][y][z] = ans_recur(x, y, z - 1) + ans_recur(x, y - 1, z - 1) + ans_recur(x, y - 1, z)
return ans[x][y][z]
else: #根据题目中的公式进行计算
ans[x][y][z] = ans_recur(x - 1, y, z) + ans_recur(x - 1, y - 1, z) + ans_recur(x - 1, y, z - 1) - ans_recur(x - 1, y - 1, z - 1)
return ans[x][y][z]
while True:
a, b, c = map(int, input().split())
if a == -1 and b == -1 and c == -1: break #三个数都是-1, 退出程序
print("w({0}, {1}, {2}) = {3}".format(a, b, c, ans_recur(a, b, c))) #输出答案
by danzy @ 2022-03-11 21:21:15
不能用[0]* 25 还是要用range循环赋值