原题

LRJ入门经典-0906最短公共父串305
难度级别:B; 运行时间限制:1000ms; 运行空间限制:256000KB; 代码长度限制:2000000B
试题描述
给定字符串A和字符串B,要求找一个最短的字符串,使得字符串A和B均是它的子序列。
输入
输入包含两行,每行一个字符串,分别表示字符串A和字符串B。(串的长度不超过30)
输出
输出A和B最短公共父串的长度以及在该长度下可以生成的父串个数,用空格隔开。
输入示例
ABAAXGF
AABXFGA
输出示例
10 9
其他说明
ABAAXGF和AABXFGA的最短公共父串之一是AABAAXGFGA,长度为10,满足该长度的父串一共由9个。

分析

代码

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long LL;
const int MAXL=32;
char S1[MAXL],S2[MAXL];
LL len1,len2,Pa[MAXL][MAXL],Pac[MAXL][MAXL];
LL dpPa(int i1,int i2)
{
LL& ans=Pa[i1][i2];
if(ans!=-1) return ans;
if(i1==0 || i2==0) return ans=max(i1,i2);
if(S1[i1]==S2[i2]) return ans=dpPa(i1-1,i2-1)+1;
int a=dpPa(i1-1,i2);
int b=dpPa(i1,i2-1);
return ans=min(a,b)+1;
}
LL dpPac(int i1,int i2)
{
LL& ans=Pac[i1][i2];
if(ans!=-1) return ans;
if(i1==0 || i2==0) return ans=1;
if(S1[i1]==S2[i2]) return ans=dpPac(i1-1,i2-1); LL sl1=dpPa(i1-1,i2),sl2=dpPa(i1,i2-1);
if(sl1==sl2) ans=dpPac(i1-1,i2)+dpPac(i1,i2-1);
else if(sl1<sl2) ans=dpPac(i1-1,i2);
else ans=dpPac(i1,i2-1);
return ans;
}
int main()
{
gets(S1+1),gets(S2+1);
len1=strlen(S1+1),len2=strlen(S2+1);
memset(Pa,-1,sizeof(Pa)),memset(Pac,-1,sizeof(Pac));
cout<<dpPa(len1,len2)<<" "<<dpPac(len1,len2)<<endl;
/*for(int i=0;i<=len1;i++)
{
for(int j=0;j<=len2;j++) cout<<Pa[i][j]<<" ";
cout<<endl;
}
cout<<endl;
for(int i=0;i<=len1;i++)
{
for(int j=0;j<=len2;j++) cout<<Pac[i][j]<<" ";
cout<<endl;
}*/
return 0;
}

  

LRJ入门经典-0906最短公共父串305的更多相关文章

  1. 2018.11.2 2018NOIP冲刺之最短公共父串

    很有意思的一个题 试题描述 给定字符串A和字符串B,要求找一个最短的字符串,使得字符串A和B均是它的子序列. 输入 输入包含两行,每行一个字符串,分别表示字符串A和字符串B.(串的长度不超过30) 输 ...

  2. LRJ入门经典-0907万圣节的小L306

    原题 LRJ入门经典-0907万圣节的小L306 难度级别:B: 运行时间限制:1000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述 今天是万圣节,小L同学开始了 ...

  3. LRJ入门经典-0905邮票和信封305

    原题 LRJ入门经典-0905邮票和信封305 难度级别:B: 运行时间限制:1000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述 假定一张信封最多贴5张邮票,如 ...

  4. LRJ入门经典-0903切蛋糕305

    原题 LRJ入门经典-0903切蛋糕305 难度级别:B: 运行时间限制:1000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述 如图所示有一个矩形蛋糕,上面划分成 ...

  5. C++语言学习——LRJ入门经典笔记

    1.scanf的输入格式,空格.TAB和回车符都是无关紧要,所以按Enter键并不意味着输入结束. 告诉程序输入结束的方式: 在windows下,输入完毕后先按Enter键,再按Ctrl+Z键,最后再 ...

  6. C++入门经典-例6.23-字符串数组赋值与string

    1:代码如下: // 6.23.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #inc ...

  7. C++入门经典-例6.22-字符串与数组,string类型的数组

    1:数组中存储的数据也可以是string类型的.代码如下: // 6.22.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include ...

  8. C++入门经典-例6.19-字符串类型之修改string字符串的单个字符串

    1:头文件 #include <string> 声明一个string变量,形式如下: std::string s; 初始化string类型的变量: std::string s1(" ...

  9. C++入门经典-例6.7-字符串比较

    1:strcmp函数,用于比较两个字符串.格式如下: strcmp(字符数组名1,字符数组名2) 按照ASCII码,按顺序比较两个数组中的字符,并由函数返回值返回比较结果的执行过程. (1)各自选中自 ...

随机推荐

  1. Codeforces Round #271 (Div. 2) 解题报告

    题目地址:http://codeforces.com/contest/474 A题:Keyboard 模拟水题. 代码例如以下: #include <iostream> #include ...

  2. less13 颜色值函数

    //通过十进制红色,绿色,蓝色三种值 (RGB) 创建不透明的颜色对象. div{ background: rgb(255,0,0); background: rgb(100%,0%,0%); } / ...

  3. Struts2国际化-getText()方法

    转自https://blog.csdn.net/qq_43560838/article/details/83747604 一:简单理解 国际化简称i18n,其来源是英文单词 international ...

  4. Webkit 的麻烦和解决

    * placeholder 在 focus 状态下内容为空时,依然显示文字.和 IE11,Firefox 均不一致: input:focus::-webkit-input-placeholder { ...

  5. P1452 Beauty Contes

    题目背景 此处省略1W字^ ^ 题目描述 贝茜在牛的选美比赛中赢得了冠军”牛世界小姐”.因此,贝西会参观N(2 < = N < = 50000)个农场来传播善意.世界将被表示成一个二维平面 ...

  6. View的双击动作

    有时在android中需要为某一控件设置双击监听,实现也挺简单,自己动手吧.编码永远不是问题,思路才是最重要. public class DoubleClickDemo extends Activit ...

  7. 关于iOS声音识别的框架

    你好,我现在的项目中需要用到"声纹识别"这方面的需求,以前没做过,请教了.有没有这方面的框架和工具? 关于iOS声音识别的框架 >> ios这个答案描述的挺清楚的:ht ...

  8. Node+Deployd+MongoDB安装问题

    首先:祝大家新年快乐!然后:最近在看一本angular教程,教程里面需要装一些软件(node,deployd,mongodb),当三个装完后在doc命令行下运行项目时出现问题了 mongodb已经按照 ...

  9. vcenter server appliance 5.5 管理中心 linux 版本的部署

    本文选自通过ovf模板部署: 需要下面两个文件即可: 打开vsphere client 登录到你安装了exsi5.5的物理机上面: 点击文件---> 部署ovf模板  ---->选择你的模 ...

  10. UI Framework-1: Aura and Shell dependencies

    Aura and Shell dependencies The diagram below shows the dependencies of Chrome, Ash (Aura shell), vi ...