/ Vijos / 题库 /

不同的子序列

不同的子序列

时间限制:1秒  内存限制:256M


【问题描述】

  序列 \(S\) 的一个子序列为删掉 \(S\) 中的 零个或几个元素后的序列。严格地说:对于序列 \(Z=z_1z_2…z_k\)和\(X=x_1x_2…x_m\),当且仅当存在一个严格递增的 \(X\) 下标序列,使得对于所有的 \(j=1,2,…,k\),均有 \(x_{i_j}=z_j\),称 \(Z\) 为 \(X\) 的一个子序列。例如,\(Z=bcdb\) 就是 \(X=abcbdab\) 的一个子序列,对应的下标序列为 \(<2,3,5,7>\)。
  你的任务是写一个程序,统计 \(Z\) 在 \(X\) 中作为不同的子序列(即对应不同的下标序列)出现了多少次。

【输入格式】

  第一行包含一个字符串\(X\),完全由小写英文字母组成并且长度不超过10000。
  接下来的一行为另一个字符串 \(Z\),长度不超过100,同样由小写英文字母组成。保证 \(Z\) 或它的任意前缀,后缀在 \(X\) 出现的次数均不超过 \(10^{100}\)。

【输出格式】

  一个整数,表示Z在X中出现的次数。

【输入输出样例1】

 Input

babgbag
bag

 Output

5 

【输入输出样例2】

 Input

rabbbit
rabbit

 Output

3

【数据限制】

  完全由小写英文字母组成并且长度不超过10000。

【来源】

  Mr.he

信息

ID
1174
难度
5
分类
动态规划 | 递推 | 高精度 | LCS 点击显示
标签
(无)
递交数
0
已通过
0
通过率
?
被复制
2
上传者