【Uva 10723】Cyborg Genes

news/2024/11/28 5:51:01/

Link:

Description

给你两个串s1,s2;
让你生成一个串S;
使得s1和s2都是S的子列;
要求S最短;
求S的不同方案个数;

Solution

设两个串的长度分别为n1和n2;
则答案为n1+n2-两个串的最长公共子序列
不同的串则可以在求最长公共子序列的时候顺便求出;
设dp2[i][j],表示第一个字符串前i个字符,第二个字符串前j个字符能组成的不同的字符串的个数;
dp1[i][j]是最长公共子序列数组
如果
s1[i]==s2[j],dp2[i][j] = dp2[i-1][j-1];
(表示在dp2[i-1][j-1]所表示的所有字符串的末尾再加上一个s1[i])
s1[i]!=s2[j]:
dp1[i-1][j]>dp1[i][j-1],则dp2[i][j] = dp2[i-1][j]
(表示在dp[i-1][j]所表示的所有字符串末尾再加上一个s1[i]);
dp1[i-1][j]< dp1[i][j-1],则dp2[i][j] = dp2[i][j-1];
(同理)
dp1[i-1][j]==dp1[i][j-1],则dp2[i][j] = dp2[i][j-1]+dp2[i-1][j];
(两个都是最长的,则两个都能加上s1[i]或s2[j]组成符合要求的字符串)
有空串,用gets..

NumberOf WA

1

Reviw

最长公共子序列的变形题;

Code

#include <bits/stdc++.h>
using namespace std;
#define LL long longconst int N = 30;char s1[N+5],s2[N+5];
LL dp1[N+5][N+5],dp2[N+5][N+5];
int n1,n2;int main(){//freopen("F:\\rush.txt","r",stdin);int T;scanf("%d",&T);getchar();for (int ii = 1;ii <= T;ii++){gets(s1+1);gets(s2+1);memset(dp1,0,sizeof dp1),memset(dp2,0,sizeof dp2);n1 = strlen(s1+1),n2 = strlen(s2+1);for (int i = 0;i <= n1;i++)dp2[i][0] = 1;for (int i = 1;i <= n2;i++)dp2[0][i] = 1;for (int i = 1;i <= n1;i++)for (int j = 1;j <= n2;j++)if (s1[i]==s2[j]){dp1[i][j] = dp1[i-1][j-1]+1;dp2[i][j] = dp2[i-1][j-1];}else{dp1[i][j] = max(dp1[i-1][j],dp1[i][j-1]);if (dp1[i-1][j] > dp1[i][j-1])dp2[i][j] = dp2[i-1][j];elseif (dp1[i-1][j] < dp1[i][j-1])dp2[i][j] = dp2[i][j-1];elsedp2[i][j] = dp2[i-1][j] + dp2[i][j-1];}printf("Case #%d: %lld %lld\n",ii,(LL) n1+n2-dp1[n1][n2],dp2[n1][n2]);}return 0;
}

http://www.ppmy.cn/news/126032.html

相关文章

dos批处理中%~dp0%的说明

%~dp0 “d”为Drive的缩写&#xff0c;即为驱动器&#xff0c;磁盘、“p”为Path缩写&#xff0c;即为路径&#xff0c;目录cd是转到这个目录&#xff0c;使用 /D 开关&#xff0c;除了改变驱动器的当前目录之外&#xff0c;还可改变当前驱动器。 选项语法:~0 - 删除任何引号(&…

【硬件】【USB】【Type-C】

Type-C 接口优点&#xff1a; 接口信号对称分布&#xff0c;支持正反插兼容 USB3.1、USB3.0、USB2.0、USB1.1最高传输速率支持到 10Gbps最大功率支持 100W&#xff08;20V&5A&#xff09;支持 DisplayPort video 和 4路 audio channel 接口定义 公头&#xff1a; 母头&a…

动态规划——导弹拦截(最长不上升子序列、最长上升子序列)

题目链接 题目描述 某国为了防御敌国的导弹袭击&#xff0c;发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷&#xff1a;虽然它的第一发炮弹能够到达任意的高度&#xff0c;但是以后每一发炮弹都不能高于前一发的高度。某天&#xff0c;雷达捕捉到敌国的导弹来袭。…

算法---LeetCode 198. 打家劫舍

1. 题目 原题链接 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上 被小偷闯入&#xff0c;系统会自动报警。 给定一个代表…

[kuangbin带你飞]专题十二 基础DP1 -B - Ignatius and the Princess IV

“OK, you are not too bad, em… But you can never pass the next test.” feng5166 says. “I will tell you an odd number N, and then N integers. There will be a special integer among them, you have to tell me which integer is the special one after I tell y…

Android P DP1:WiFi-RTT、刘海、多摄像头、GIF动画、NNAPI 1.1

\ 看新闻很累&#xff1f;看技术新闻更累&#xff1f;试试下载InfoQ手机客户端&#xff0c;每天上下班路上听新闻&#xff0c;有趣还有料&#xff01;\ \\ 谷歌发布了Android P第一个开发预览版&#xff08;DP1&#xff09;&#xff0c;其中有几项值得注意的新特性&#xff1a;…

[kuangbin带你飞]专题十二 基础DP1 H - Tickets HDU - 1260

题目描述 Jesus, what a great movie! Thousands of people are rushing to the cinema. However, this is really a tuff time for Joe who sells the film tickets. He is wandering when could he go back home as early as possible. A good approach, reducing the total …

[kuangbin带你飞]专题十二 基础DP1

ID Origin Title 题解连接 167 / 465 Problem A HDU 1024 Max Sum Plus Plus here 234 / 372 Problem B HDU 1029 Ignatius and the Princess IV 水题&#xff01;&#xff01;&#xff01; 161 / 259 Problem C HDU 1069 Monkey and Banana here …