up sequence 문서

이런 유형의 다이나믹 프로그래밍이 처음에는 이해가 쉽지 않습니다. 하지만 다이나믹 프로그래밍 접근 하는 방법에서 중요한 부분이니 꼭 이해하세요.
다음 데이터에서 up sequece 를 구하여 보자.
6 2 9 8 3 4 1 7 4
6 2 9 8 3 4 1 까지는 눈으로 최대 up sequece 길이를 구하면 7 에서 설명 합니다. 7 앞에 올수 있는 후보수는 그림에서 체크된 수 입니다.

이 중 최대 길이에 7 을 붙이는게 최대. 이 경우에는 4 가 3 으로 최대이므로 7 의 최대 up sequence 의 길이는 4 가 됩니다.

다음 수 4 도 같은 방법으로 확장 합니다.

구한 up sequence 중에 최대 값이 최대 up sequence.

소스

for(i = 1;i <= 데이터의 개수 ;i++){
   max = 0;
   for(j = i-1; j >= 1;j--)
      if (data[i] > data[j]) // j 번째 데이터가 i 번째 데이터보다 작으면 
         if (max < m[j] ) max=m[j];
   up[i] = max+1;
}

//최대 up sequence 구하기 ans

ans = up[1];
for( i = 2 ; i <= 데이터의 개수;i++){
   if ( ans < up[i] ) ans = up[i];
}

분석

시간 복잡도는 O(n^2) 이고 binary indexed tree 를 이용하여 O(nlogn)으로도 가능.
출처:dovelet

[질/답]
[홈으로]  [뒤 로]
[푼 후(0)]