1 条题解

  • 0
    @ 2024-3-27 19:57:16
    #include <iostream>
    #include <cstring>
    typedef long long ll;
    using namespace std;
    const int N = 1010;
    ll dp[N][N];//dp[i][j]表示t串前j个字符在s串中前i个字符中出现的次数
    
    int main()
    {
        int n, m;
        cin>>n>>m;
        string s, t;   
        cin>>s>>t;
    
        for(int i = 0; i <= n; i ++ )
            dp[i][0] = 1;
    
        for(int i = 1; i <= n; i ++ )
            for(int j = 1; j <= m; j ++ )
            {
                //不选择第i个字符
                dp[i][j] = dp[i - 1][j];
                //想等了才可以选择
                if(s[i - 1] == t[j - 1])
                    dp[i][j] += dp[i - 1][j - 1];
            }
    
        cout<<dp[n][m]<<endl;
    }
    
    • 1

    信息

    ID
    570
    时间
    2000ms
    内存
    128MiB
    难度
    10
    标签
    递交数
    4
    已通过
    2
    上传者