找出最长的递增的子序列
nums=[1,5,2,4,3]
def xxx(nums):
for i in range(len(nums)):
if nums[i]>0:
y=nums[i]
return y
nums=[1,-5,2,4,-3]
print(xxx(nums))#1
def xxx(nums):
for i in range(len(nums)):
if nums[i]>0:
y=nums[i]
return y
nums=[1,-5,2,4,-3]
print(xxx(nums))#4
def L(nums,i):
if i==len(nums)-1:
return 1
max_len=1
for j in range(i+1,len(nums)):
if nums[j]>nums[i]:
max_len=max(max_len,L(nums,j)+1)
return max_len
def length_of_LIS(nums):
return max(L(nums,i) for i in range(len(nums)))
nums=[1,5,2,4,3]
i=0
print(L(nums,i))#3
print(length_of_LIS(nums))#3
memo={}
def L(nums,i):
if i in memo:
return memo[i]
if i==len(nums)-1:
return 1
max_len=1
for j in range(i+1,len(nums)):
if nums[j]>nums[i]:
max_len=max(max_len,L(nums,j)+1)
return max_len
def length_of_LIS(nums):
return max(L(nums,i) for i in range(len(nums)))
nums=[1,5,2,4,3]
i=0
print(L(nums,i))
print(length_of_LIS(nums))
找出连续子序列的最大和
[3,-4,2,-1,2,6,-5,4]
#暴力枚举
nums=[3,-4,2,-1,2,6,-5,4]
lm=[]
for j in range(len(nums)-1):
sum=nums[j]
ls=[]
for i in range(j+1,len(nums)):
sum=sum+nums[i]
ls.append(sum)
lm.append(max(ls))
print(max(lm))#9