私は、サブシーケンス統計のあなた-DP番号を愛し

ポータル:私はあなたを愛して

質問の意味:文字列であって、必要な配列(連続ではないかもしれない)「ILOVEYOU」の数、所与の
DP [i] [j]がテキストでサブストリング0-I-1,0-Jを表すテキスト文字列の場合にサブシーケンスの数があります。
Tの最初の検討する検討
状態遷移式:
の場合[I-1] = [ J-1]の場合、T、DP [I] [J ] = DP [I-1] [j]に、 この0-I-! 1,0-J-1,0-J-1の0-I-2など
の場合、[I-1] == T [J-1] 、DP [I] [J] = DP [1- 1] [J-1] + DP [I-1] [j]は、 この場合は、DPによって提供することができる、新しいを生成することができる[I-1] [J -1] 引き続き、及び結合DP [I-1 ] [J]。

#include<bits/stdc++.h>
using namespace std;
const int mod=20010905;
string S,T;
int dp[1084594][10];
int solve() {
      int ss=S.size()+1;
      int st=T.size()+1;
      dp[0][0]=1;
      for(int i=1;i<ss;++i) {
        dp[i][0]=1;
      }
      for(int i=1;i<ss;++i){
          for(int j=1;j<=i&&j<st;++j){
              if(S[i-1]==T[j-1]){
                  dp[i][j]=(dp[i-1][j-1]+dp[i-1][j])%mod;
              }else{
                  dp[i][j]=dp[i-1][j];
              }
          }
      }
      return dp[ss-1][st-1];
  }
int main(){
    cin>>S;
    transform(S.begin(),S.end(),S.begin(),::tolower);
    T="iloveyou";
    cout<<solve()<<endl;
    return 0;
}

公開された96元の記事 ウォン称賛11 ビュー2257

おすすめ

転載: blog.csdn.net/weixin_43769146/article/details/104060556