def basic_lis(seq): l=[1]*len(seq) for cur,val in enumerate(seq): for pre in range(cur): if seq[pre]<val: l[cur]=max(l[cur], 1+l[pre]) return max(l) L=[49,64,17,100,86,66,68,68,87,96,19,99,35] print(basic_lis(L))
时间: 2024-02-26 13:54:40 浏览: 74
lis302.rar_LIS302 STM32_LIS302DL_lis302
这是一个 Python 代码,实现了最长递增子序列(Longest Increasing Subsequence)的算法。具体来说,这个算法使用动态规划的思想,通过遍历序列中的每个元素,找到前面所有小于当前元素的元素,并计算以这些元素为结尾的最长递增子序列长度,最终返回所有以每个元素为结尾的最长递增子序列长度中的最大值。
具体来说,代码中的 `basic_lis` 函数接受一个序列 `seq` 作为参数,首先创建一个长度为序列长度的列表 `l`,并将其所有元素初始化为 1。然后使用两个循环遍历序列中的每个元素和其前面的所有元素,如果前面的某个元素小于当前元素,则更新当前元素对应位置上的 `l` 值为该元素对应位置上的 `l` 值与前面元素对应位置上的 `l` 值加 1 的最大值。最后遍历 `l` 列表,返回其中的最大值即为最长递增子序列的长度。
在代码末尾,我们定义了一个列表 `L`,并调用 `basic_lis` 函数计算其最长递增子序列的长度,并将其打印出来。
阅读全文