牛客小白21-I LOVE YOU (子序列 + dp)

题目链接

  题目其实很简单  以字母为单位   子序列 + dp 思考    (寒假太懒了, 自己也好天真, 还是要努力啊

#include <bits/stdc++.h>
using namespace std;
const int mod = 20010905;
const string sub_str = " iloveyou";
// 注意有两个o!!
string str;
int sum[10];
int main()
{
    cin>>str;
    sum[0]=1;
    for (int i=0; i<str.size(); i++) {
        if (str[i]>='A'&&str[i]<='Z') 
            str[i]=str[i]-'A'+'a';
        auto p = sub_str.find(str[i]);
        if (p!=str.npos) 
            sum[p] = (sum[p-1]+sum[p])%mod;
        // 因为有两个o 所以这里find两次 所以
        p = sub_str.find(str[i], p+1);
        if (p!=str.npos) 
            sum[p] = (sum[p-1]+sum[p])%mod;
    }
    cout<<sum[8]<<endl;
    return 0;
}

 

上一篇:气泡背景墙


下一篇:字符串