python如何打印一个列表不能和相邻元素挨着_程序在python的循环列表中查找不相邻元素的总和...

假设我们有一个称为nums的数字列表,它表示一个循环列表。我们必须找到最大的不相邻数字之和。

因此,如果输入类似于nums = [10,3,4,8],那么输出将为14,因为我们可以取10和4。我们不能取10和8,因为它们是相邻的。

为了解决这个问题,我们将遵循以下步骤-n:= nums的大小

nums1:= nums [从索引0到n-2]

nums2:= nums [从索引1到结尾]

定义一个功能f()。这需要我

如果i> = nums1的大小,则返回0

返回nums1 [i] + f(i + 2)和f(i + 1)的最大值

定义一个功能g()。这将花费j

如果j> = nums2的大小,则返回0

返回nums2 [j] + g(j + 2)和g(j + 1)的最大值

从主要方法中执行以下操作-

返回f和g的最大值

让我们看下面的实现以更好地理解-

示例class Solution:

def solve(self, nums):

n = len(nums)

nums1 = nums[: n - 1]

nums2 = nums[1:]

def f(i):

if i >= len(nums1):

return 0

return max(nums1[i] + f(i + 2), f(i + 1))

def g(j):

if j >= len(nums2):

return 0

return max(nums2[j] + g(j + 2), g(j + 1))

return max(f(0), g(0))

ob = Solution()nums = [10, 3, 4, 8]

print(ob.solve(nums))

输入值[10, 3, 4, 8]

输出结果14

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值