AtCoderBeginnerContest130 EF
https://atcoder.jp/contests/abc130
E题 dp
题意:求数组s和数组t的公共子序列个数
思路:
f [ i ] [ j ] s中选到了第i个,t中选到了第j个且一定选第j个的方案数
转移方程:
如果s[i] ! = t[ j ] 则 f [ i ][ j ] = f [ i - 1] [ j ]
如果s[i] == t[ j ]
则 f [ i ] [ j ] = sum(f[i-1][1],f[i-1][2]…,f[i-1][j-1])+f[ i-1 ][ j ]+ 1;
int n,m;
int s[N],t[N];
ll f[N][N];
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) scanf("%d",&s[i]);
for(int i=1;i<=m;i++) scanf("%d",&t[i]);
for(int i=1;i<=n;i++){
ll sum = 0;
for(int j=