lc718 동적 기획의 제목

4242 단어 동적 기획
최장 반복 하위 그룹
두 개의 정수 그룹 A와 B를 주고 두 그룹의 공통적이고 길이가 가장 긴 하위 그룹의 길이를 되돌려줍니다.
여기에 동적 기획을 사용하는 것을 고려한다. 예를 들어 이런 출력 값을 사용하는 문제, 그리고 이런 교체된 느낌을 가진 문제는 동적 기획의 사고방식을 고려한다.
동태 계획의 사고방식은 상태 이동과 교체에 있다.
길이가 5와 길이가 4인 그룹의 최장자 그룹을 생각해 보세요. 상태가 바뀌려면 최소한 상태가 연속되어야 하기 때문에 dp의 상태는 이 인덱스를 오른쪽의 최장자 그룹으로 설정할 수 있습니다. dp[4][3]는 마지막 숫자로 오른쪽으로 구성된 최장자 그룹으로 표시할 수 있습니다.만약 A[4]!=B[3], 그럼 dp[4][3]는 0.만약에 A[4]=B[3]라면 dp[4][3]=dp[3][2]+1, 이것이 바로 전이 방정식이다.
다음은 어떻게 계획하고 초기치를 어떻게 정하는가이다.여기는 전이 방정식의 한 상태 인덱스가 모두 이전 줄에 있기 때문에 가로로 쓸면 됩니다.
여기서 주의해야 할 것은 2차원 dp수조는 절대로 이렇게 dp=[[0](len(A)+1)](len(B)+1)]을 만들 수 없다는 것이다. 이렇게 만들면 모든 하위 목록의 바늘은 주소이다.
코드는 다음과 같습니다.

dp = [[0 for x in range(len(A)+1)] for y in range(len(B)+1)]
res = 0
for i in range(1,len(B)+1):
    for j in range(1,len(A)+1):
        if B[i-1]==A[j-1]:
            dp[i][j]=dp[i-1][j-1]+1
        res = max(dp[i][j],res)
return res


좋은 웹페이지 즐겨찾기