程序以从Python中移除找出最大点
假设我们提供了一个正数列表。现在,在这里我们可以删除具有相同值的长度为t的任何连续子列表,并获得点t*t。要考虑的一个条件是,我们可以执行任意次此操作,直到列表为空。因此,我们必须确定可以获得的最大点数。
因此,如果输入类似于nums=[4、4、6、4、4],则输出将为17。
对于输出,我们可以首先删除长度为1并产生1*1=1点的6。然后我们可以得到列表[4,4,4,4],它的长度为4,产生4*4=16点。所以最后,我们可以得到17分。
让我们看下面的实现以更好地理解-
示例
class Solution:
def solve(self, nums):
def dp(left, right, t):
if left > right:
return 0
num = nums[left]
left2 = left
while left2 < right and nums[left2 + 1] == num:
left2 += 1
t += left2 − left + 1
left = left2 + 1
points = t ** 2 + dp(left, right, 0)
for mid in range(left, right + 1):
if nums[mid] == num:
points = max(points, dp(left, mid − 1, 0) + dp(mid, right, t))
return points
return dp(0, len(nums) − 1, 0)
ob1 = Solution()
print(ob1.solve([4, 4, 6, 4, 4]))输入值
[4, 4, 6, 4, 4]
输出结果
17
热门推荐
10 医院探望朋友祝福语简短
11 毕业祝福语简短女朋友
12 春节虎年爸妈祝福语简短
13 儿童毕业祝福语 简短6
14 开工仪式横幅祝福语简短
15 孩子日常祝福语大全简短
16 清晨寄语诗句祝福语简短
17 结婚送亲认亲祝福语简短
18 虎年喝酒拜年祝福语简短