教育分野DP問題の範囲;
表題最短間隔長隣り合う二つが組み合わされてもよい場合、同じ条件下ことと++。
間隔の長さは、各トラバース配列の長さで、次に列挙することができ、。
その最終値の部分範囲および値に等しい各間隔について。それはトラバース中に各サブインターバルの長さを横断する必要があります。
あなたは二つのサブインターバルの長さとの間に一連の操作の後に経験し、1に等しい場合、それらを組み合わせることができます。
コード
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 長い 長い [ 505 ] [ 505 ]。 長い 長い DP [ 505 ] [ 505 ]。 int型のmain() { int型、nは cinを >> N; 以下のために(INT iが= 1 ; I <= N; I ++ ) { ため(INT J = I; J <= nであり、j ++ ) { DP [I] [J] = J-I + 1 。 } } のために(INT iは= 1 ; iが<= N; I ++ ) { CIN >> [I] [I]。 } のための(INT I = LEN; I <= N; I ++ ) { ため(INT J = 1 ; J <= N-lenを+ 1、J ++ ) { int型、R = J + len- 1 。 用(int型 ; K <R K ++、K = J ) { DP [J] [R] =分(DP [J] [R]、DP [J] [K] + DP [K + 1 ] [R])。 もし(DP [J] [K] == 1つの && DP [K +1 ] [R] == 1 && [J] [K] == [K + 1 ] [R]) { [J] [R]は [j]を= [] + K 1 。 DP [J] [R] = 1 。 } } } } COUT << DP [ 1 ] [N] << ENDL。 }