lightoj 1013
思路:动态规划。设dp[i][j][k]表示用第一个串的前i隔字符和第二个串的前k隔字符组成长度为i的串的个数,那么:若s1[j+1] == s2[k+1] dp[i+1][j+1][k+1] += dp[i][j][k],否则:dp[i+1][j+1][k] += dp[i][j][k]; dp[i+1][j][k+1] += dp[i][j][k]
#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int MAXN = 31;
long long int dp[MAXN<<1][MAXN][MAXN];
char s1[MAXN], s2[MAXN];
int main(){
int t, CASE(0);
scanf("%d", &t);
while(t--){
scanf("%s%s", s1, s2);
int len1 = strlen(s1), len2 = strlen(s2);
memset(dp, 0, sizeof dp);
dp[0][0][0] = 1;
for(int i = 1;i <= len1+len2;i ++){
for(int j = 1;j <= len1+1;j ++){
for(int k = 1;k <= len2+1;k ++){
if(s1[j-1] == s2[k-1]) dp[i][j][k] += dp[i-1][j-1][k-1];
else{
dp[i][j][k-1] += dp[i-1][j-1][k-1];
dp[i][j-1][k] += dp[i-1][j-1][k-1];
}
}
}
}
int ans;
for(int i = 1;i <= len1+len2;i ++){
if(dp[i][len1][len2]){
ans = i;
break;
}
}
printf("Case %d: %d %lld\n", ++CASE, ans, dp[ans][len1][len2]);
}
return 0;
}
lightoj 1013的更多相关文章
- (最长公共子序列+推导)Love Calculator (lightOJ  1013)
		http://www.lightoj.com/volume_showproblem.php?problem=1013 Yes, you are developing a 'Love calcula ... 
- lightoj 1013 dp
		题目链接:http://lightoj.com/volume_showproblem.php?problem=1013 #include <cstdio> #include <cst ... 
- LightOJ 1013 - Love Calculator LCS
		题意:找一个串使给出的两个串都是它的子串,要求最短,求出最短长度,以及种类数. 思路:可以想到,当两个子串a,b拥有最长的公共子串为LCS时,那么可以求出的最短的串为lena+lenb-LCS. 那么 ... 
- Light oj 1013 - Love Calculator (LCS变形)
		题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1013 题意: 给你两个字符串,让你构造出一个长度最小的字符串,且它的子序列包含 ... 
- lightoj刷题日记
		提高自己的实力, 也为了证明, 开始板刷lightoj,每天题量>=1: 题目的类型会在这边说明,具体见分页博客: SUM=54; 1000 Greetings from LightOJ [简单 ... 
- 区间DP LightOJ 1422 Halloween Costumes
		http://lightoj.com/volume_showproblem.php?problem=1422 做的第一道区间DP的题目,试水. 参考解题报告: http://www.cnblogs.c ... 
- pat甲级题解(更新到1013)
		1001. A+B Format (20) 注意负数,没别的了. 用scanf来补 前导0 和 前导的空格 很方便. #include <iostream> #include <cs ... 
- LightOj 1298 - One Theorem, One Year(DP + 欧拉)
		题目链接:http://lightoj.com/volume_showproblem.php?problem=1298 题意:给你两个数 n, p,表示一个数是由前 k 个素数组成的,共有 n 个素数 ... 
- 1214 - Large Division -- LightOj(大数取余)
		http://lightoj.com/volume_showproblem.php?problem=1214 这就是一道简单的大数取余. 还想还用到了同余定理: 所谓的同余,顾名思义,就是许多的数被一 ... 
随机推荐
- Python3 面向对象
			Class 在Python中,定义类是通过class关键字: class Student(object): pass class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是( ... 
- sql server 2008数据复制方法
			发布订阅份为两个步骤:1.发布.2.订阅.首先在数据源数据库服务器上对需要同步的数据进行发布,然后在目标数据库服务器上对上述发布进行订阅.发布可以发布一张表的部分数据,也可以对整张表进行发布.下面分别 ... 
- MySQL基础学习之数据库
			创建一个新的数据库 create database 数据库名称; 查看所有数据库 show databases; 删除数据库 drop database 数据库名称 
- 支持阻塞操作和轮询操作的globalfifo设备驱动代码分析以及测试代码
			#include <linux/module.h> #include <linux/types.h> #include <linux/fs.h> #include ... 
- TypeScript学习指南--目录索引
			关于TypeScript: TypeScript是一种由微软开发的自由和开源的编程语言.它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程. TypeS ... 
- 一步步学习ASP.NET MVC3 (10)——@Ajax,JavaScriptResult(1)
			请注明转载地址:http://www.cnblogs.com/arhat 首先老魏先说一下抱歉,昨天由于在安装CentOS,Mono,Jexus配置Linux环境下的ASP.NET运行环境,花费了不少 ... 
- JS数据类型&&typeof&&其他
			1. 5种基本数据类型: 1. String 2. Number 3. Boolean 4. Undefined 5. Null 2. 1种复杂数据类型:Object 3. 检测变量的数据类型:typ ... 
- xss攻击入门
			xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在xss攻击中,通过插入恶意 ... 
- Unity3D研究院之在MAC上脚本XlsxWriter写入Excel .xlsx格式
			原地址:http://www.xuanyusong.com/archives/3011 以前找了很久可以跨平台支持读写Excel的工具,我也试了很多种DLL.可在Windows上各个完美支持,可是在M ... 
- 通过 SignalR 类库,实现 ASP.NET MVC 的实时通信
			在本文中,您将学到在现有 ASP.NET MVC 框架的 CRUD 项目中,如何使用 SignalR 类库,显示来自数据库的实时更新.在这一主题中,我们将重点放在在现有 ASP.NET MVC 框架的 ... 
