题目
https://leetcode.com/problems/largest-divisible-subset/description/
想法
排序
能整除集合中的最大的数,那么也会属于这个集合
直觉DP..
遇到一个新数,从此数前一个开始判断,是否可以并入
维护更新max
好像需要回溯来做,需要记录序列
backtracking
回溯写了个,TLE
|
|
感觉是剪枝做得不够充分..
1 2 4
1 2 之后,就不应该试1 4了,肯定比1 2..少
这个怎么剪呢?
将上述代码中#1部分改动:
|
|
AC,但是时间是1540ms,显然勉强AC
DP
if (nums[i] % nums[j] == 0)
dp[i] = max(dp[j] + 1, dp[i])
最后运行16ms,还好
这里关键的一点是选取最后的结果上,注意筛选方式:
|
|
答案
|
|