A,B两个序列相同的子序列个数

来源:互联网 发布:js string转int 编辑:程序博客网 时间:2024/04/29 13:41

题目:A,B两个序列相同的子序列个数

#include <bits/stdc++.h>using namespace std;#define maxn 1000+40#define mod 1000000007typedef long long int LL;int n , m;LL dp[maxn][maxn];int a[maxn];int b[maxn];int main(){    while( cin >> n >> m )    {        memset(dp,0,sizeof(dp));        for(int i = 1 ; i <= n ; ++i)        {            scanf("%d ",&a[i]);        }        for(int i = 1 ; i <= m ; ++i)        {            scanf("%d",&b[i]);        }        for(int i = 1 ; i <= n ; ++i)        {            for(int j = 1 ; j <= m ; ++j)            {                if( a[i] == b[j] )                {                    dp[i][j] = dp[i-1][j] + dp[i][j-1] + 1;                }                else dp[i][j] = dp[i-1][j] + dp[i][j-1] - dp[i-1][j-1];                dp[i][j] %= mod;            }        }        cout << (dp[n][m] + mod)%mod << endl;    }}


阅读全文
0 0