[동적 프로그래밍] 354 러시아어 인형 봉투 leetcode

문제 : https://leetcode.com/problems/russian-doll-envelopes/

        문제의 가장 긴 연속 서브 타입. 정렬하기 위해, DP [I] 인형의 최대 개수 i 번째 레코드를 사용.

부울 CMP ( CONST 벡터 < INT > 및 X, CONST 벡터 < INT > & Y) 
{ 
    리턴 X [ 0 ] == Y [ 0 ]? X [ 1 ] <Y [ 1 ], X [ 0 ] <Y [ 0 ]; 
} 
클래스 솔루션 {
 공개 : 

    INT의 maxEnvelopes (벡터 <벡터 < INT >> & 봉투) { 
        종류 (envelopes.begin (), envelopes.end (), CMP); 
        INT N = envelopes.size ();
        만약 (! n을) 반환  0; 
        벡터 < INT > DP (N, 1 );
        INT 입술 = 0 ;
        위한 ( int로 I = 0 ; i가 N <; 내가 ++ ) 
        { 
             ( INT의 J = 0 ; J <I, J ++ ) 
            { 
                경우 (봉투 [J] [ 0 ] == 봉투 [I] [ 0 ]) 분해 ;
                경우 (봉투 [I] [ 1 ]> 봉투 [J] [ 1 ]) 
                { 
                    DP [I]= 최대 (DP [I], DP [J] + 1 ); 
                } 
            } 
            입술 = 최대 (DP [I] 입술); 
        } 
        반환 입술을; 
    } 
};

 

추천

출처www.cnblogs.com/fish1996/p/11332509.html