我为UVa Online Judge的任务而苦恼 11450 - Wedding shopping。
我设法用C ++编写了代码并获得了AC。 不幸的是,我无法在python-TLE中做同样的事情。
我想学习用python编写代码,这就是为什么我使用它。我知道C ++在竞争性编程等方面明显更快,更好。
任何想法这段代码有什么问题吗?我该如何改善才能获得AC?
from sys import stdin, stdout
def shop(money, curr_g):
if money < 0:
return -1
if curr_g == c:
return m - money
if memo[money][curr_g] is not -1:
return memo[money][curr_g]
ans = -1
for model in range(1, price[curr_g][0] + 1):
ans = max(ans, shop(money - price[curr_g][model], curr_g + 1))
memo[money][curr_g] = ans
return ans
price = list(list() for i in range(21))
memo = list(list(-1 for j in range(21)) for i in range(201))
n = int(input())
for i in range(n):
m, c = map(int, stdin.readline().split())
for a in range(c):
price[a] = [int(x) for x in stdin.readline().split()]
for a in range(201):
for b in range(21):
memo[a][b] = -1
ans = shop(m, 0)
stdout.write(str(ans) + "\n") if ans >= 0 else stdout.write('no solution\n')