文章

6

粉丝

8

获赞

35

访问

4.3k

头像
Distinct Subsequences 题解:
P1692 南京大学机试题
发布于2026年3月22日 18:14
阅读数 46

#include <cstdio>
#include <cstring>
#include <vector>

#define N 10010

int f[N];

void init()
{
    memset(f, 0x00, sizeof(f));
    f[0] = 1;
}

int main()
{
    int q;
    scanf("%d", &q);

    while (q--)
    {
        char s[N];
        char t[N];
        scanf("%s%s", s + 1, t + 1);

        int n = strlen(s + 1);
        int m = strlen(t + 1);

        std::vector<int> pos[26];

        for (int i = m; i >= 1; i--)
            pos[t[i] - 'a'].push_back(i);

        init();
        for (int i = 1; i <= n; i++)
        {
            for (int j : pos[s[i] - 'a'])
                f[j] = (f[j] + f[j - 1]) % 1000000007;
        }
        printf("%d\n", f[m]);
    }
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发