调试Google KickStart 2022 Round D Maximum Gain问题DP代码错误
问题描述
我在使用动态规划方法求解**Google KickStart 2022 Round D - 最大收益问题(Maximum Gain Problem)**时,反复调试代码始终无法得到正确结果,耗费了大量精力。
题目链接:Maximum Gain Problem
我编写的Python代码如下:
# 辅助函数 def proceedForOneOnly(O, k, gainOne): if k==0: return 0 return gainOne + max([proceedForOneOnly(O[1:], k-1, O[0]), proceedForOneOnly(O[:-1], k-1, O[-1])]) # 核心求解函数 def maxGain(A, B, k, gain): # 边界条件 if k==0: return 0 # 检查两个任务数组是否为空 if len(B)==0: return proceedForOneOnly(A, k-1, gain) elif len(A)==0: return proceedForOneOnly(B, k-1, gain) # 两个数组均非空的分支 return gain + max([maxGain(A[1:], B, k-1, A[0]), maxGain(A[:-1], B, k-1, A[-1]), maxGain(A, B[1:], k-1, B[0]), maxGain(A, B[:-1], k-1, B[-1])]) # 读取输入并迭代调用求解函数 def main(): n = int(input()) for i in range(n): nA = int(input()); A = list(map((lambda i: int(i)), input().split())) nB = int(input()); B = list(map((lambda i: int(i)), input().split())) k = int(input()) print(f"Case #{1}: {maxGain(A, B, k, 0)}") main()
运行异常表现
当前代码在如下给出的前两个测试用例上运行,输出结果为22(正确预期应为24)、138(正确预期应为148),结果存在偏差:
2 3 3 1 2 4 2 8 1 9 5 4 1 100 4 3 6 15 10 12 5 1 10 6
恳请各位帮忙定位代码中存在的问题。
内容的提问来源于stack exchange,提问作者Syed M Abbas Haider Taqvi
相关产品推荐
相关产品推荐

