python整除的最大数,程序查找最大子集的长度,其中每对中的一个元素在Python中可被其他元素整除...

假设我们有一个称为nums的唯一数字列表,所以我们必须找到最大的子集,以使子集中的每一对元素(i,j)都满足i%j = 0或j%i = 0。必须找到该子集的大小。

因此,如果输入类似于nums = [3,6,12,24,26,39],则输出将为4,因为最大的有效子集为[3,6,12,24]。

为了解决这个问题,我们将遵循以下步骤-dp:=大小数字列表,并用1填充

排序列表

n:= nums的大小

如果n <= 1,则返回n

回答:= 0

对于1到n范围内的i,执行如果nums [i]被nums [j]整除,则

dp [i]:= dp [i]和dp [j]的最大值+ 1

对于范围在0到i之间的j,执行

ans:= ans和dp [i]的最大值

返回ans

范例(Python)

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

def solve(self, nums):

dp = [1] * len(nums)

nums.sort()

n = len(nums)

if n <= 1:

return n

ans = 0

for i in range(1, n):

for j in range(0, i):

if nums[i] % nums[j] == 0:

dp[i] = max(dp[i], dp[j] + 1)

ans = max(ans, dp[i])

return ans

ob = Solution()

nums = [3, 6, 12, 24, 26, 39]

print(ob.solve(nums))

输入值[3, 6, 12, 24, 26, 39]

输出结果4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值