def max_increasing_subsequence(arr):
n = len(arr)
# 初始化一个长度为N的数组dp,所有元素初始化为1
dp = [1] * n
# 对于每个位置i,遍历其前面的所有位置j,寻找满足条件的最长子序列长度
for i in range(1, n):
for j in range(i):
# 如果arr[i]是arr[j]的整数倍,并且arr[i]大于arr[j],更新dp[i]
if arr[i] % arr[j] == 0 and arr[i] > arr[j]:
dp[i] = max(dp[i], dp[j] + 1)
# 返回dp中的最大值即为满足条件的最长子序列长度
return max(dp)
# 测试用例
arr = [1, 2, 3, 4, 6, 9, 12]
print(max_increasing_subsequence(arr)) # 输出: 4
wps-1
最新推荐文章于 2024-05-01 21:37:48 发布