zoukankan      html  css  js  c++  java
  • P2679 子串

    #include <bits/stdc++.h>
    #define read read()
    #define up(i,l,r) for(register int i = (l);i <= (r);i++)
    #define down(i,l,r) for(register int i = (l);i >= (r);i--)
    #define traversal_vedge(i) for(register int i = head[u]; i ;i = e[i].nxt)
    #define ll long long
    using namespace std;
    int read
    {
        int x = 0, f = 1; char ch = getchar();
        while(ch < 48 || ch > 57) {if(ch == '-')f = -1; ch = getchar();}
        while(ch >=48 && ch <=57) {x = 10 * x + ch - 48;ch = getchar();}
        return x * f; 
    }
    const int mod = 1000000007;
    int n,m,maxk,f[2][205][205][2];
    char a[1005],b[205];
    bool c = 0;
    
    int main()
    {
        freopen("input.txt","r",stdin);
        n = read; m = read; maxk = read;
        scanf("%s",a+1);
        scanf("%s",b+1);
        f[0][0][0][0] = f[1][0][0][0] = 1;// 两行0初始化为1; 
        up(i,1,n)
        {
            c ^=1;
            up(j,1,m)
                up(k,1,maxk)
                {
                    if(a[i] == b[j])
                    {
                        
                        f[c][j][k][0] = (f[c^1][j][k][1] + f[c^1][j][k][0])%mod;
                        f[c][j][k][1] = ((f[c^1][j-1][k][1] + 
                        f[c^1][j-1][k-1][0])%mod + f[c^1][j-1][k-1][1])%mod; 
                    }
                    else
                    {
                        f[c][j][k][0] = (f[c^1][j][k][1] + f[c^1][j][k][0])%mod;
                        f[c][j][k][1] = 0;
                    }
                }
        }
        printf("%d
    ",(f[n&1][m][maxk][0] + f[n&1][m][maxk][1])%mod);
        return 0;
    }

  • 相关阅读:
    Delete Them
    Toda 2
    JQuery案例:购物车加减
    JQuery案例:折叠菜单
    JQuery案例:暖心小广告
    JQuery案例:左右选
    JQuery动画
    JQuery切换事件
    JQuery文档操作
    JQuery选择器
  • 原文地址:https://www.cnblogs.com/mzg1805/p/10414909.html
Copyright © 2011-2022 走看看