2
누구나이 코드가 각각의 증가하는 서브 시퀀스를 생성하지 않는 이유를 말할 수 있습니까? 동적 프로그래밍을 사용하여이 문제를 해결했지만이 코드가 실패한 이유를 알 수 없습니다. 매개 변수 A
은 정수 시퀀스입니다. A에서 제조파이썬에서 가장 길게 증가하는 서브 시퀀스 얻기
def LIS(A):
# make a list of lists
L = list()
for i in range(0, len(A)):
L.append(list())
#the first increasing subsequence is the first element in A
L[0].append(A[0])
for i in range(1, len(A)):
for j in (0, i):
# a new larger increasing subsequence found
if (A[j] < A[i]) and (len(L[i]) < len(L[j])):
L[i] = L[j]
L[i].append(A[i])
# print an increasing subsequence
print L[i]
출력 예 = 3, 5, 10, 0, 1, 100, 2, 4, 7] 이러한 알고리즘 :
[3, 5]
[3, 5, 10]
[0]
[1]
[3, 5, 10, 100]
[2]
[3, 5, 10, 100, 4]
[3, 5, 10, 100, 4, 7]
None
올바른 출력 :
[3]
[3, 5]
[3, 5, 10]
[0]
[0, 1]
[3, 5, 10, 100]
[0, 1, 2]
[0, 1, 2, 4]
[0, 1, 2, 4, 7]
내가
1.You 목록을 가정
코드에서 발견
왜 [''[0, 1, 100]''이 (가) 유효하지 않습니까? – wwii
'A'의 첫 번째 항목을 'A [i]'또는 'A [i]'와 항상 비교하기 때문에 내부 루프에서 수행하려는 작업이 작동하지 않습니다. -'''(0, 1)''은 (0, i)에서 j에 대해'''를 반복 할 올바른 것이 아니다.'''. 당신이'동적 프로그래밍 '을 사용하고 있다는 어떠한 증거도 보이지 않습니다. – wwii
인쇄 내용을 보려면 print 문을 입력하십시오. ['''pprint.pprint (L)'''] (https://docs.python.org/2.7/library/pprint.html#pprint.pprint) 함수의 마지막 문장으로, * 외부 루프가 * stopped * 후에 *. – wwii