【发布时间】:2020-04-07 14:25:57
【问题描述】:
所以首先我没有进行任何测试。只是练习有竞争力的编码。我正在从 Hacker Earth 解决这个问题。
我首先尝试使用动态编程方法进行求解。这是我写的:
def maxSubsetSum(arr):
if(len(arr)>2):
#mainting this array for storing intermediate result and last element of this will always be max sum
li=[0]*len(arr)
li[0]=arr[0]
li[1]=arr[1] if arr[1]>li[0] else li[0]
for i in range(2,len(arr)):
li[i] = max(li[i-1],arr[i]+li[i-2])
return li[len(arr)-1]
else:
return max(arr)
但不幸的是,在 33 个案例中,有 7 个案例失败了,这不是因为超时,而是因为答案错误。我想不出我的代码有什么问题。 我使用了一些 hackos 来获得隐藏的测试用例之一。 PFB 测试用例,非常庞大,所以上传到 pastebin
只是想知道代码中出了什么问题,导致某些测试用例失败
【问题讨论】:
-
没有使用测试用例(没有使用过 pastebin),但是通过删除
range(2,len(..))到range(len(..))给我第一个链接中测试用例的正确结果。你试过没有2吗? -
是的,它有效,但为什么?我的意思是理想情况下我已经计算了第 0 个和第 1 个索引的结果,所以我从 2 开始循环。
标签: python