题意 求母串中子串出现的次数(长度不超过1后面100个0  显然要用大数了)

令a为子串 b为母串 d[i][j]表示子串前i个字母在母串前j个字母中出现的次数   当a[i]==b[j]&&d[i-1][j-1]!=0时 d[i][j]=d[i-1][j-1]+d[i][j-1]

(a[i]==b[j]时 子串前i个字母在母串前j个字母中出现的次数 等于 子串前i-1个字母在母串前j-1个字母中出现的次数 加上 子串前i个字母在母串前j-1个字母中出现的次数

 a[i]!=b[j]时 子串前i个字母在母串前j个字母中出现的次数 等于 子串前i个字母在母串前j-1个字母中出现的次数)

懒得写大数模版就用java交的  ;

import java.util.*;
import java.math.*; public class Main {
public static void main(String args[]) {
BigInteger d[][] = new BigInteger[105][10005];
Scanner in = new Scanner(System.in);
int t = in.nextInt();
while ((t--) != 0) {
String b = in.next();
String a = in.next();
int la = a.length();
int lb = b.length(); for (int i = 0; i < la; ++i)
for (int j = 0; j < lb; ++j)
d[i][j] = BigInteger.ZERO; if (a.charAt(0) == b.charAt(0))
d[0][0] = BigInteger.ONE;
for (int j = 1; j < lb; ++j) {
if (a.charAt(0) == b.charAt(j))
d[0][j] = d[0][j - 1].add(BigInteger.ONE);
else
d[0][j] = d[0][j - 1];
} for (int i = 1; i < la; ++i)
for (int j = 1; j < lb; ++j) {
if (a.charAt(i) == b.charAt(j)
&& d[i - 1][j - 1] != BigInteger.ZERO) {
d[i][j] = d[i][j - 1].add(d[i - 1][j - 1]);
} else
d[i][j] = d[i][j - 1];
} System.out.println(d[la - 1][lb - 1]); }
in.close();
}
}

还有没加大数模版的C++代码

#include<cstdio>
#include<cstring>
using namespace std;
char b[10005], a[105];
int d[105][10005], la, lb, t;
void dp()
{
memset(d, 0, sizeof(d));
for(int j = 1; j <= lb; ++j)
{
if(a[1] == b[j]) d[1][j] = d[1][j - 1] + 1;
else d[1][j] = d[1][j - 1];
}
for(int i = 2; i <= la; ++i)
for(int j = 1; j <= lb; ++j)
{
if(a[i] == b[j] && d[i - 1][j - 1])
{
d[i][j] = d[i][j - 1] + d[i - 1][j - 1];
}
else d[i][j] = d[i][j - 1];
}
}
int main()
{
scanf("%s", &t);
while(t--)
{
scanf("%s%s", b + 1, a + 1);
la = strlen(a + 1);
lb = strlen(b + 1);
dp();
printf("%d\n", d[la][lb]); }
return 0;
}

Distinct Subsequences

A subsequence of a given sequence is just the given sequence with some elements (possibly none) left out. Formally, given a sequence X = x1x2xm,
another sequence Z = z1z2zk is a subsequence of X if there exists a strictly increasing sequence <i1,i2,
…, ik>
 of indices of X such that for all j = 1, 2, …, k, we have xij = zj. For example, Z = bcdb is
a subsequence of X =abcbdab with corresponding index sequence < 2, 3, 5, 7 >.

In this problem your job is to write a program that counts the number of occurrences of Z in X as a subsequence such that
each has a distinct index sequence.

 

Input

The first line of the input contains an integer N indicating the number of test cases to follow.

The first line of each test case contains a string X, composed entirely of lowercase alphabetic characters and having length no greater than 10,000.
The second line contains another string Z having length no greater than 100 and also composed of only lowercase alphabetic characters. Be assured that neither Z nor any prefix or suffix of Z will
have more than 10100 distinct occurrences in X as a subsequence.

 

Output

For each test case in the input output the number of distinct occurrences of Z in X as a subsequence. Output
for each input set must be on a separate line.

 

Sample Input

2

babgbag

bag

rabbbit

rabbit

 

Sample Output

5

3

UVa 10069 Distinct Subsequences(大数 DP)的更多相关文章

  1. uva 10069 Distinct Subsequences 【dp+大数】

    题目:uva 10069 Distinct Subsequences 题意:给出一个子串 x 和母串 s .求子串在母串中的不同序列的个数? 分析:定义dp[i][j]:x 的前 i 个字母在 s 的 ...

  2. uva 10069 Distinct Subsequences(高精度 + DP求解子串个数)

    题目连接:10069 - Distinct Subsequences 题目大意:给出两个字符串x (lenth < 10000), z (lenth < 100), 求在x中有多少个z. ...

  3. UVA 10069 Distinct Subsequences(DP)

    考虑两个字符串,我们用dp[i][j]表示字串第到i个和字符串到第j个的总数,由于字串必须连续 因此dp[i][j]能够有dp[i][j-1]和dp[i-1][j-1]递推而来,而不能由dp[i-1] ...

  4. 115. Distinct Subsequences (String; DP)

    Given a string S and a string T, count the number of distinct subsequences of T in S. A subsequence ...

  5. Distinct Subsequences (dp)

    Given a string S and a string T, count the number of distinct subsequences of T in S. A subsequence ...

  6. [LeetCode] Distinct Subsequences 不同的子序列

    Given a string S and a string T, count the number of distinct subsequences of T in S. A subsequence ...

  7. LeetCode(115) Distinct Subsequences

    题目 Given a string S and a string T, count the number of distinct subsequences of T in S. A subsequen ...

  8. [Leetcode][JAVA] Distinct Subsequences

    Given a string S and a string T, count the number of distinct subsequences of T in S. A subsequence ...

  9. Distinct Subsequences Leetcode

    Given a string S and a string T, count the number of distinct subsequences of T in S. A subsequence ...

随机推荐

  1. js滚动事件实现滚动触底加载

    移动端触底加载时前端开发过程中常用功能,主要是通过三个值的大小来进行判断: 首先介绍jquery的写法,代码如下: $(window).scroll(function(){ var windowH=$ ...

  2. ASP.NET-ActionResutlt

    @RenderPage("Page_part1"); 上面的这种写法是错误的应该是 @RenderPage("Page_part1.cshtml"); // 要 ...

  3. codevs——T1814 最长链

    http://codevs.cn/problem/1814/  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 De ...

  4. spring boot pom

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  5. Bing地图切片原理

    Bing地图切片系统 Bing地图提供了一个可以直接平移和缩放的世界地图.为了让地图操作更加平滑和及时响应,我们选择提前渲染地图不同层级的细节,并把每个层级的地图切割成为瓦片以便快速的还原展示.这篇文 ...

  6. POJ 1281 MANAGER

    MANAGER Time Limit:1000MS    Memory Limit:10000KB    64bit IO Format:%I64d & %I64u Description O ...

  7. node08---Express框架

    一.Express框架 Express框架是后台的Node框架,所以和jQuery.zepto.yui(雅虎的).bootstrap都不一个东西. Express在后台的受欢迎的程度,和jQuery一 ...

  8. excel文件使用html导出

    <table><tr><td>1</td></tr><tr><td>2</td></tr>& ...

  9. sql 查询所有数据库-表-表结构

    --查询数据库中的所有数据库名: SELECT * FROM Master..SysDatabases ORDER BY Name --查询某个数据库中所有的表名: select * from sys ...

  10. SpringMVC(一) 简单代码编写,注解,重定向与转发

    SpringMVC是什么 SpringMVC是目前最好的实现MVC设计模式的框架,是Spring框架的一个分支产品,以SpringIOC容器为基础,并利用容器的特性来简化它的配置.SpringMVC相 ...