题目链接:http://codeforces.com/problemset/problem/163/A

题意:

  给你两个字符串a,b,问你有多少对"(a的子串,b的子序列)"可以匹配。

题解:

  表示状态:

    dp[i][j] = pairs

    a的子串以a[i]结尾,b的子序列以b[1 to j]结尾的方案数。

  找出答案:

    ans = ∑ dp[i][lb]

    (la,lb代表a和b的长度)

  如何转移:

    dp[i][j] = dp[i][j-1]

    if(a[i] == b[j]) dp[i][j] += dp[i-1][j-1]+1

    a[i]和b[j]相同时,可以将dp[i][j]中的匹配都向后延伸一位。

    同时(a[i],b[j])也是一种匹配,所以还要+1。

  边界条件:

    set dp = 0

AC Code:

 #include <iostream>
#include <stdio.h>
#include <string.h>
#define MAX_N 5005
#define MOD 1000000007 using namespace std; int ans=;
int dp[MAX_N][MAX_N];
char a[MAX_N];
char b[MAX_N]; int main()
{
scanf("%s%s",a+,b+);
int la=strlen(a+);
int lb=strlen(b+);
memset(dp,,sizeof(dp));
for(int i=;i<=la;i++)
{
for(int j=;j<=lb;j++)
{
dp[i][j]=(dp[i][j-]+(a[i]==b[j])*(dp[i-][j-]+))%MOD;
}
ans=(ans+dp[i][lb])%MOD;
}
printf("%d\n",ans);
}

Codeforces 163A Substring and Subsequence:dp【子串与子序列匹配】的更多相关文章

  1. CodeForces 163A Substring and Subsequence dp

    A. Substring and Subsequence 题目连接: http://codeforces.com/contest/163/problem/A Description One day P ...

  2. Codeforces 163A Substring and Subsequence

    http://codeforces.com/problemset/problem/163/A?mobile=true 题目大意:给出两个串,问a的连续子串和b的子串(可以不连续)相同的个数. 思路:在 ...

  3. Codeforce 163 A. Substring and Subsequence DP

    A. Substring and Subsequence   One day Polycarpus got hold of two non-empty strings s and t, consist ...

  4. CodeForces - 919D Substring (拓扑排序+dp)

    题意:将一个字符串上的n个字符视作点,给出m条有向边,求图中路径上最长出现的相同字母数. 分析:首先如果这张图中有环,则可以取无限大的字符数,在求拓扑排序的同时可以确定是否存在环. 之后在拓扑排序的结 ...

  5. lintcode 77.Longest Common Subsequence(最长公共子序列)、79. Longest Common Substring(最长公共子串)

    Longest Common Subsequence最长公共子序列: 每个dp位置表示的是第i.j个字母的最长公共子序列 class Solution { public: int findLength ...

  6. CF-163A Substring and Subsequence 字符串DP

    Substring and Subsequence 题意 给出两个字符串s,t,求出有多少对s的子串和t的子序列相等. 思路 类似于最长公共子序列的dp数组. dp[i][j]表示s中以i为结尾的子串 ...

  7. [BZOJ 3625] [Codeforces 438E] 小朋友的二叉树 (DP+生成函数+多项式开根+多项式求逆)

    [BZOJ 3625] [Codeforces 438E] 小朋友的二叉树 (DP+生成函数+多项式开根+多项式求逆) 题面 一棵二叉树的所有点的点权都是给定的集合中的一个数. 让你求出1到m中所有权 ...

  8. poj 2533 Longest Ordered Subsequence 最长递增子序列

    作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4098562.html 题目链接:poj 2533 Longest Ordered Subse ...

  9. C++版 - Lintcode 77-Longest Common Subsequence最长公共子序列(LCS) - 题解

    版权声明:本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C++版 - L ...

随机推荐

  1. 使用mescroll实现上拉加载与下拉刷新

    现在上拉加载与下拉刷新几乎已经是移动端必备功能之一了,自己实现一个太麻烦,但是好用的插件又非常少.之前看到网上很多人都在用iScroll,于是也尝试用它做了几个DEMO,但或多或少都有一些问题,比如这 ...

  2. SPI协议介绍

    一.概述 SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上是通过接在外围设备微控制 ...

  3. quartus2 13.0+modelsim联合开发环境搭建(win10)

    quartus2用于硬件设计代码的综合,检查是否有语法错误:modelsim用于对硬件设计代码进行仿真,观察波形是否与需求一致,需要编写xxx_tb.v才能仿真 一.quartus2安装见这篇文章ht ...

  4. mysql数据库去除重复数据

    (一)最原始的方法: delete from test where id not in (select * from ((select min(id) from test group by(name) ...

  5. Django下实现HelloWorld

    我的实现工具:window10 在window10 下面,实现第一个Django的HelloWorld项目. 1.创建一个项目 确保你的电脑上装了python和Django.我的是在python2.7 ...

  6. 自定义一个更好用的SwipeRefreshLayout(弹力拉伸效果详解)(转载)

    转自: 自定义一个更好用的SwipeRefreshLayout(弹力拉伸效果详解) 前言 熟悉SwipeRefreshLayout的同学一定知道,SwipeRefreshLayout是android里 ...

  7. 多媒体开发之---开源库ffmeg的log之子解析

    用了ffmeg快两年了,对其中的log甚是感兴趣,今天在做8148项目是,解读h264结构,看了<毕-新一代视频压缩编码标准h246> ,在第六章中的重排序里面看到了好熟悉的4x4矩阵zi ...

  8. jquery基础研究学习【HTML】

    jQuery HTMLjQuery 捕获jQuery 设置jQuery 添加元素jQuery 删除元素jQuery CSS 类jQuery css() 方法jQuery 尺寸 笔记:

  9. 使用tomcat7-maven-plugin部署Web项目

      一.环境准备 我使用的环境是:Window 10.Tomcat 8.0.36.maven3.tomcat7-maven-plugin 2.2版本. 二.设置环境变量 安装Tomcat8.0.36和 ...

  10. SpringMVC拦截器实现用户登录拦截

    本例实现登陆时的验证拦截,采用SpringMVC拦截器来实现 当用户点击到网站主页时要进行拦截,用户登录了才能进入网站主页,否则进入登陆页面 核心代码 首先是index.jsp,显示链接 1 < ...