クラス解決{ パブリック: INT longestPalindromeSubseq(ストリングS){ int型 LEN = s.size()。 もし(LEN == 0 ) の戻り 0 ; ベクター <ベクトル< INT >> DP(LEN、ベクトル< INT >(LEN、1 ))。 以下のために(INT iが= 1 ; I <LEN; I ++ ) { ため(INT J = 0 ; J <len- 1 ; J ++ ) { もし(I == 1 ) { 場合(J + I <LEN && S [j] == S [J + I]) { DP [J] [J + 1] = 2 ; } } 他 { 場合(J + I < LEN) { もし、(S [j] == S [J + I]) { DP [J] [J + I] = DP [J + 1 ] [J + I- 1 ] + 2 。 } 他 { DP [J] [J+ I] = MAX(DP [J + 1 ] [j + 1]、DP [J] [J + I- 1 ])。 } } } } } 戻り DP [ 0 ] [len- 1 ]。 } }。