用python写最长递增子序列,输入格式: 输入包含两行。第一行给出一个正整数n(1≤n≤2500)。第二行给出n个由空格分隔的整数(-10^4≤nums[i]≤10^4)。 输出格式: 在一行中输出最长递增子序列的长度。
时间: 2024-03-20 17:42:25 浏览: 47
好的,这是一个经典的动态规划问题。可以用Python解决。
首先,我们可以用一个列表来存储最长递增子序列的长度,初始化为1,因为每个数字本身都可以作为子序列。
然后,我们遍历整个数组,对于每个数字,我们再次遍历前面的数字,如果前面的数字小于当前数字,则说明当前数字可以接在前面数字的最长递增子序列后面,更新当前数字的最长递增子序列长度为前面数字的最长递增子序列长度加1。
最后,我们遍历整个最长递增子序列长度列表,取出其中的最大值即可。
下面是Python代码实现:
```python
n = int(input())
nums = list(map(int, input().split()))
# 初始化最长递增子序列长度列表
dp = [1] * n
# 遍历整个数组
for i in range(n):
# 再次遍历前面的数字
for j in range(i):
# 如果前面的数字小于当前数字
if nums[j] < nums[i]:
# 更新当前数字的最长递增子序列长度
dp[i] = max(dp[i], dp[j] + 1)
# 取出最长递增子序列长度列表中的最大值
print(max(dp))
```
阅读全文