动态规划June-13th “Largest Divisible Subset (Python3)”
Posted 迪乐阅读
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态规划June-13th “Largest Divisible Subset (Python3)”相关的知识,希望对你有一定的参考价值。
Input: [1,2,3]
Output: [1,2] (of course, [1,3] will also be ok)
Input: [1,2,4,8]
Output: [1,2,4,8]
一:可除以整除子集中的最大元素的任何值,加入到子集中,可以形成另一个整除子集,即对于所有 h,若有 h % G == 0,则 [E, F, G, h] 形成新的可除子集。
二:可除以整除子集中最小元素的任何值,加入到子集中,可以形成另一个整除子集,即,对于所有的 d,若有 E % d == 0,则 [d, E, F, G] 形成一个新的整除子集。
class Solution:
def largestDivisibleSubset(self, nums: List[int]) -> List[int]:
nums.sort()
dp_table = [[x] for x in nums]
res = []
for i in range(len(nums)):
for j in range(i):
if nums[i] % nums[j] == 0 and len(dp_table[j]) + 1 > len(dp_table[i]):
dp_table[i] = dp_table[j] + nums[i:i + 1]
if len(dp_table[i]) > len(res):
res = dp_table[i]
return res
以上是关于动态规划June-13th “Largest Divisible Subset (Python3)”的主要内容,如果未能解决你的问题,请参考以下文章
动态规划May-25th “Uncrossed Lines (Python3)”
hdu2602Bone Collector ——动态规划(0/1背包问题)