题意:

给你两个字符串,让你求一个最短字符串,其中存在给出串的种类;

求这个字符串的长度和种类;

思路:

//dp[i,j,k]表示前i个字符,包含s1串前j个字母,包含s2串前k个字符时的方案数。

//按照一定的顺序,碰到相同元素只会留一个,不同元素这个位置就有两种情况

#include<cstdio>
#include<math.h>
#include<queue>
#include<map>
#include<string>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
const int INF=0x3f3f3f3f;
const LL mod=1e9+7; const int N=50;
char s1[N],s2[N];
int len[N][N];
LL dp[100][N][N];
int LCS()
{
int n,m;
n=strlen(s1+1);
m=strlen(s2+1);
memset(len,0,sizeof(len));
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(s1[i]!=s2[j])
len[i][j]=max(len[i-1][j],len[i][j-1]);
else
len[i][j]=len[i-1][j-1]+1;
}
}
return n+m-len[n][m];
} LL solve(int length)
{
int n,m;
n=strlen(s1+1);
m=strlen(s2+1);
memset(dp,0,sizeof(dp));
dp[0][0][0]=1;
for(int i=1;i<=length;i++)
{
dp[i][0][i]=1;
dp[i][i][0]=1;
for(int j=1;j<=min(n,i);j++)
{
for(int k=1;k<=min(m,i);k++)
{
if(s1[j]==s2[k])
dp[i][j][k]=dp[i-1][j-1][k-1];
else
dp[i][j][k]=dp[i-1][j-1][k]+dp[i-1][j][k-1];
}
}
}
return dp[length][n][m];
} int main()
{
int T,cas=1;
int ans1;
LL ans2;
scanf("%d",&T);
while(T--)
{
scanf("%s%s",s1+1,s2+1);
ans1=LCS();
ans2=solve(ans1);
printf("Case %d: %d %lld\n",cas++,ans1,ans2);
}
return 0;
}

Lightoj1013【DP_LCS】的更多相关文章

  1. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  2. 【原】谈谈对Objective-C中代理模式的误解

    [原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...

  3. 【原】FMDB源码阅读(三)

    [原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...

  4. 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新

    [原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...

  5. 【调侃】IOC前世今生

    前些天,参与了公司内部小组的一次技术交流,主要是针对<IOC与AOP>,本着学而时习之的态度及积极分享的精神,我就结合一个小故事来初浅地剖析一下我眼中的“IOC前世今生”,以方便初学者能更 ...

  6. Python高手之路【三】python基础之函数

    基本数据类型补充: set 是一个无序且不重复的元素集合 class set(object): """ set() -> new empty set object ...

  7. Python高手之路【一】初识python

    Python简介 1:Python的创始人 Python (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种解释型.面向对象.动态数据类型的高级程序设计语言,由荷兰人Guido ...

  8. 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】

    说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin ————————— ...

  9. 【原】FMDB源码阅读(二)

    [原]FMDB源码阅读(二) 本文转载请注明出处 -- polobymulberry-博客园 1. 前言 上一篇只是简单地过了一下FMDB一个简单例子的基本流程,并没有涉及到FMDB的所有方方面面,比 ...

随机推荐

  1. jni集成第3方third party动态库libwebrtc_audio_preprocessing.so时android.mk的编写

    现在要调用一个第3方库libwebrtc_audio_preprocessing.so 最终布局如下: 即创建2个文件夹,将第3方库放进去. include目录放第3方库的头文件  其中lib目录如下 ...

  2. WPF popup控件的使用

    <Window x:Class="WPFPopup.RuntimePopup"     xmlns="http://schemas.microsoft.com/wi ...

  3. ecshop属性排序

    属性的排序有三个方式:sort_order, attr_price, goods_attr_id如果要修改的话,修改 includes/lib_goods.php文件的 get_goods_prope ...

  4. Android Touch事件分发

    跟touch事件相关的3个方法: public boolean dispatchTouchEvent(MotionEvent ev); //用来分派event public boolean onInt ...

  5. RSA加密:利用模数和指数生成公钥加密

    引子 目前做一款金融产品,由于涉及到资金安全,采用动态公钥的方式,即客户端每次登录服务端返回一个不同的XML串,由公钥的模数和指数构成,我需要用这个串生成公钥加密相关信息.服务端返回的XML串形如: ...

  6. 升级python到最新2.7.13

    python2.7是2.X的最后一个版本,同时也加入了一部分3.X的新特性.并且具有更好的性能,修改多个bug.所以决定升级到最新的2.7版,我的目前的版本是2.6.6 查看当前python版本 # ...

  7. POJ1006 Biorhythms —— 中国剩余定理

    题目链接:https://vjudge.net/problem/POJ-1006 Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total ...

  8. ansible-playbook初始化服务器

    hosts ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ [test] 0.0.0.0 ansible_ssh_us ...

  9. YUV420数据和字符信息如何利用滤镜方法进行编码?

    YUV420数据和字符信息如何利用滤镜方法进行编码?我希望用ffmpeg中的filter方法,把YUV420数据和字符信息一起编码,该怎么办呢? 本人目前只实现了把yuv420的数据进行h.264的编 ...

  10. 使用jQuery集成Google翻译

    利用jQuery,轻松将google翻译集成到你的web应用中. 1. [代码][JavaScript]代码     ​1<script src="Scripts/Translator ...