关闭

poj1458Common Subsequence(求两个字符串的最长公共子序列)

164人阅读 评论(0) 收藏 举报
分类:
Common Subsequence
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 44296   Accepted: 18108

Description

A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = < x1, x2, ..., xm > another sequence Z = < z1, z2, ..., zk > is a subsequence of X if there exists a strictly increasing sequence < i1, i2, ..., ik > of indices of X such that for all j = 1,2,...,k, xij = zj. For example, Z = < a, b, f, c > is a subsequence of X = < a, b, c, f, b, c > with index sequence < 1, 2, 4, 6 >. Given two sequences X and Y the problem is to find the length of the maximum-length common subsequence of X and Y.

Input

The program input is from the std input. Each data set in the input contains two strings representing the given sequences. The sequences are separated by any number of white spaces. The input data are correct.

Output

For each set of data the program prints on the standard output the length of the maximum-length common subsequence from the beginning of a separate line.

Sample Input

abcfbc         abfcab
programming    contest 
abcd           mnp

Sample Output

4
2
0

Source

题目大意:就是求两个字符串的最长公共子序列

代码:

//poj-Common Subsequence(求两个字符串的最长公共子序列)
#include<stdio.h>
#include<string.h>
char str1[1010],str2[1010];
int dp[1010][1010];
int max(int a,int b){
    if(a>b)  return a;
    else     return b;
}
int main()
{
   int len1,len2,i,j;
   while(scanf("%s%s",str1,str2)!=EOF){

     len1=strlen(str1);
     len2=strlen(str2);
     memset(dp,0,sizeof(dp));
     for(i=1;i<=len1;i++)
       for(j=1;j<=len2;j++)
      {
           if(str1[i-1]==str2[j-1])
               dp[i][j]=dp[i-1][j-1]+1;
           else
               dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
       }
    printf("%d\n",dp[len1][len2]);
      }
   return 0;
}


0
0
查看评论

求两个字符串的最长公共子序列的长度(动态规划)

# include# include# define N 1000int str[N+2][N+2];int max(int a,int b){ if(a>=b) return a; else return b;}int main(){ int i,j,la,lb...
  • fanxing1
  • fanxing1
  • 2010-06-29 23:42
  • 950

【算法导论学习-29】动态规划经典问题02:最长公共子序列问题(Longest common subsequence,LCS)

《算法导论中》动态规划经典问题——最长公共子序列问题(Longest common subsequence,LCS)的java实现
  • BrilliantEagle
  • BrilliantEagle
  • 2014-09-03 21:42
  • 1500

【LeetCode】Longest Common Subsequence最长公共子序列(求出某一解+LCS长度) - Medium

Longest Common Substring Given two strings, find the longest common substring.Return the length of it.Notice The characters in substring should occur...
  • ljyljyok
  • ljyljyok
  • 2017-09-09 09:12
  • 790

求两个字符串的最长公共子序列——Java实现

要求:给定字符串1和字符串2,要求找出两个字符串的最长公共子序列。例如,字符串1=“helloworld”,字符串2=“hwewegallgeo”,那么两者的最长公共子序列为“hello” 思路:参见:http://www.cnblogs.com/zhangchaoyang/articles/20...
  • xiaoyi357
  • xiaoyi357
  • 2017-04-17 16:08
  • 1685

求两个字符串最长公共子序列的算法优化(C++实现)

前几天写的的一篇文章
  • u010189459
  • u010189459
  • 2014-06-10 22:47
  • 1599

每天一道算法题(5)——求2个字符串的最长公共子序列和最长公共子字符串

题目:如果字符串一的所有字符按其在字符串中的顺序出现在另外一个字符串二中,则字符串一称之为字符串二的子串。注意,并不要求子串(字符串一)的字符必须连续出现在字符串二中。请编写一个函数,输入两个字符串,求它们的最长公共子串,并打印出最长公共子串。        ...
  • qianhen123
  • qianhen123
  • 2015-06-01 17:02
  • 2118

找两个字符串的最长公共子序列的长度

简述: 找两个字符串的最长公共子序列的长度 例如 String str1 = “caaac”; String str2 = "bbdaaaca"; 两者最长公共子序列就是aaac 为4 代码实现: package offer; pu...
  • anialy
  • anialy
  • 2012-10-21 23:57
  • 3925

三个字符串的最长公共子序列

这个问题是最简单的动态规划问题了,只不过是三个字符串而已。         学过动态规划的应该都知道怎么求两个字符串的最长公共子序列,很容易犯的一个错误就是:先求出前两个字符串的最长公共子序列,然后再求他和第三个字符串的最长公共子...
  • cyuyanlearner
  • cyuyanlearner
  • 2013-11-08 10:52
  • 2182

51Nod-1006-最长公共子序列Lcs

给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的)。 比如两个串为:abcicba abdkscabab是两个串的子序列,abc也是,abca也是,其中abca是这两个字符串最长的子序列。 Input 第1行:字符串A 第2行:字符串B (A,B的长度 <= 1...
  • f_zyj
  • f_zyj
  • 2016-04-15 18:08
  • 1511

基因匹配Match(最长公共子序列) NlongN

http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82285#problem/F 题意:两个串,求最长公共子序列,有n个数,每个数都出现5次。设为a串和b串  分析:首先n。       ...
  • lianweicheng88
  • lianweicheng88
  • 2015-07-18 21:19
  • 552
    个人资料
    • 访问:54029次
    • 积分:2469
    • 等级:
    • 排名:第17609名
    • 原创:199篇
    • 转载:7篇
    • 译文:0篇
    • 评论:2条
    文章分类