DIシーケンスのためのleetcode903有効な順列

アイデア:

DP [i] [j]はI + 1位まで示し、そして残りの全ての図と小区間J + 1は、全てのデジタル数列端に有効です。

実装:

1  クラスソリューション
 2  {
 3  公共4      INT numPermsDISequence(ストリングS)
 5      {
 6          場合(S.empty())戻り 0 7          INT N = S.length()、MOD = 1E9 + 7 8          ベクトル<ベクトル< INT >> DP(2、ベクトル< INT >(N + 10 ))。
9          int型 I = 0 ; iが<= N; iが++)DP [ 0 ] [I] =1 ;
10          のためにint型 I = 1を iが++; iが<= N 11          {
 12の             場合( - S [I 1 ==] ' D ' 13              {
 14                  DP [I&1 ] [N - I] DPを= [I - 1 - 1 ] [N - I + 1 ]。
15                  のためのint型 - - I J = N 1 ; J> = 0 ; j-- 16                      DP [I&1 ] [J] =(DP [I&1] [J + 1 ] + DP [I - 1 - 1 ] [J + 1 ])%MOD。
17              }
 18              他の
19              {
 20                  DPは[I&1 ] [ 0 ] = DP [I - 1 - 1 ] [ 0 ]。
21                  のためにINT J = 1 ; - I J <= nであり、j ++ 22                      DP [I&1 ] [J] =(DP [I - 1 - 1 ] [J] + DP [I&1 ] [J - 1])%MOD。
23              }
 24          }
 25          リターン DP [N - 1 ] [ 0 ]。
26      }
 27 }

おすすめ

転載: www.cnblogs.com/wangyiming/p/11573330.html