|
|

楼主 |
发表于 2019-11-19 19:41:26
|
显示全部楼层
- def LIS(L):
- ASC=[1]*len(L);Tra=[-1]*len(L)
- for i in range(1,len(L)):
- x=[]
- for j in range(0,i):
- if L[i]>L[j]:
- x.append(j)
- for k in x:
- if ASC[i]<ASC[k]+1:
- ASC[i]=ASC[k]+1;Tra[i]=k
- print("ASC:",ASC)
- print("Tra:",Tra)
- max=0
- for i in range(1,len(ASC)):
- if ASC[i]>ASC[max]:max=i
- print("最长递增子序列长度:",ASC[max])
- x=[L[max]];i=max;
- while (Tra[i]>=0):
- x=[L[Tra[i]]]+x
- i=Tra[i]
- print("最长递增子序列=",x)
-
- 递归:
- def ASC(k):
- if k==0:return(1)
- x=[]
- for i in range(0,k):
- if l[k]>l[i]:x.append(ASC(i))
- if len(x)>0:return(max(x)+1)
- else:return(1)
- def lis(l):
- x=[]
- for k in range(0,len(l)):
- x.append(ASC(k))
- print(x)
- print(max(x))
复制代码 |
|