题目描述
给定一个序列 An = a1 ,a2 , ... , an ,找出最长的子序列使得对所有 i < j ,ai < aj 。求出这个子序列的长度
输入描述:
输入的序列
输出描述:
最长递增子序列的长度
示例1
输入
1 -1 2 -2 3 -3 4
输出
4
说明
这是经典的动态规化
arr = input().split()
arr = list(map(int, arr))
n = len(arr)
dp = [0 for i in range(n+1)]
# dp[i] 表示以i结尾的最长子列的长度
# dp[i] = max(dp[j])+1 if arr[i]>arr[j] j<i
dp[0] = 1
for i in range(1, n):
for j in range(0, i):
if arr[i] > arr[j]:
dp[i] = max(dp[j] + 1, dp[i])
res = 0
for i in range(n):
res = max(res, dp[i])
print(res)