I LOVE YOU

I love you

https://ac.nowcoder.com/acm/contest/3947/I

用dp来推断子序列个数

if (s[i] >= &#39;A&#39; && s[i] <= &#39;Z&#39;) s[i] += 32;统一小写,大小写不敏感。

dp[j] = dp[j] + (s[i] == a[j]) * dp[j - 1];如果匹配,对当前位置加上前一位。

#include <bits/stdc++.h>
using namespace std;
int n, Mod = 20010905, dp[10];
char a[] = "0iloveyou", s[684600];
int main() {
    cin >> s + 1;
    f[0] = 1;
    n = strlen(s + 1);
    for (int i = 1; i <= n; ++i) {
        if (s[i] >= &#39;A&#39; && s[i] <= &#39;Z&#39;) s[i] += 32;
        for (int j = 1; j <= 8; ++j) {
            dp[j] = dp[j] + (s[i] == a[j]) * dp[j - 1];
            dp[j] %= Mod;
        }
    }
    cout << f[8];
}
算法竞赛之路 文章被收录于专栏

整理、记录算法竞赛的好题

全部评论

相关推荐

一表renzha:手写数字识别就是一个作业而已
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务