【UVA10405】【裸LCS】

2024-08-31 16:58
文章标签 lcs uva10405

本文主要是介绍【UVA10405】【裸LCS】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


坑点在于输入有空格

#include <iostream>
#include <cstring>
#include <cmath>
#include <queue>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <string>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
using namespace std;//string a;
//string b;
char a[1010];
char b[1010];
int dp[1010][1010];
int main()
{while(gets(a) && gets(b)){int l1 = strlen(a);int l2 = strlen(b);memset(dp,0,sizeof(dp));for(int i=0;i<l1;i++){for(int j=0;j<l2;j++){if(a[i] == b[j]){dp[i + 1][j + 1] = dp[i][j] + 1;} else{dp[i + 1][j + 1] = max(dp[i + 1][j],dp[i][j + 1]);}}}printf("%d\n",dp[l1][l2]);}


这篇关于【UVA10405】【裸LCS】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1124468

相关文章

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

uva 10066 LCS

题意: 最长公共子序列。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <queue>#include

NLP文本相似度之LCS

基础 LCS(Longest Common Subsequence)通常指的是最长公共子序列,区别最长公共字串(Longest Common Substring)。我们先从子序列的定义理解: 一个序列S任意删除若干个字符得到新的序列T,则T叫做S的子序列。 子序列和子串的一个很大的不同点是,子序列不要求连接,而子串要求连接。 两个序列X和Y的公共子序列中,长度最长的那个,定义为X和Y

最长公共子串(LCS)

(1) 找出两个字符串的最长公共子串 题目:输入两个字符串,找出两个字符串中最长的公共子串。 找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的。 #include<iostream>#include<string>using namespace std;int main(){string s1 = "GCCCTAGCCAGDE";string s2 = "GCGCCAGT

LCS转为LIS

(1) 先将所有数列排序。     第一维由小到大,当第一维相等时,第二维由大到小。   (排序规则亦可改成以第二个维度为主,最后则是找第一个维度的1DLIS。)       a     a    a     b     b    a     a     a    c     d   (0,6) (0,3) (0,2) (1,4) (1,1)(2,6) (2,3) (2,2) (3,5) (4,

lightoj1033 - Generating Palindromes (LCS)

题意:给你一个字符串,至少需要添加多少字符可以使得它变成一个回文串. 思路 :设串S的反串为S‘那么strlen(S) - LCS(S, S')就是本问题的答案. 如: S(原串)       A   b  3  b  d S1(倒序串)   d   b  3  b  A LCS                   b  3  b         所以,有3个字符已经配对,不用添加

LIS(最长递增子序列)和LCS(最长公共子序列)的总结

LIS(最长递增子序列)和LCS(最长公共子序列)的总结 最长公共子序列(LCS):O(n^2) 两个for循环让两个字符串按位的匹配:i in range(1, len1) j in range(1, len2) s1[i - 1] == s2[j - 1], dp[i][j] = dp[i - 1][j -1] + 1; s1[i - 1] != s2[j - 1], dp[

Coincidence(LCS最长公共子序列)

题目1042:Coincidence 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:810 解决:430 题目描述: Find a longest common subsequence of two strings. 输入: First and second line of each input case contain two strings of

HDU-1513 Palindrome LCS+滚动数组

/*http://acm.hdu.edu.cn/showproblem.php?pid=1513将原字符串倒置,然后与原字符串求最长公共子序列,答案就是len-dp[len][len]。*/#include "stdio.h"#include "string.h"const int maxn = 510;int n;char str1[maxn],str2[maxn];int d

九度1131_合唱队形【LIS】【LCS】

题目1131:合唱队形 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1706 解决:529 题目描述: N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学不交换位置就能排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1, 2, …, K,他们的身高分别为T1, T2, …, TK, 则他们的身高满足T1 <