请需要您的帮助,我得到了一个失败的测试用例,由于超时,如果有人可以帮助我提高代码执行所花费的时间。这个问题来自HackerRank网站,如果有人需要更多的解释,我会在下面的评论中引用这个问题的链接
from itertools import combinations
def powerSum(X, N,n=1,poss=[]):
if(n**N <= X):
poss.append(n)
n+=1
rslt = powerSum(X,N,n,poss)
else:
tmp=[]
for _ in range(len(poss)):
oc=combinations(poss,_+1)
for x in oc:
ok = sum([num**N for num in x])
if(ok == X):
tmp.append(ok)
return len(tmp)
return rslt
我不擅长python,但我希望下面的java代码可以很容易理解,这是一个间接的子集和问题的变体,这是一个动态规划问题,在给定值数组的情况下,您必须找到很多方法来获得给定的特定和,所以基本上在应用子集问题之前,我已经列出了一个数字列表,可以通过在第k次方超过x的数字处停止来计算所需的总和,因为从该自然数开始,进一步的自然数将有更大的第k次方值,因此不需要将它们保留在我们的列表中,因此这里是一个动态规划问题,如上所述,其中我们的列表具有有效自然数的第k次方值,我们必须找到不同的方法,使用这些第k次方值来获得和x
下面是更清晰理解的代码
相关问题 更多 >
编程相关推荐