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, x ij = 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 题意:求最大公共子序列的长度 解题思路:
 用d[i][j]表示公共子序列的长度。
      如果x[i-1]==y[j-1]
           d[i][j]=d[i-1][j-1]+1
      否则
           d[i][j]=max(d[i-1][j],d[i][j-1])
       代码如下:
 #include <stdio.h>
#include <string.h>
int max(int a,int b)
{
return a>b?a:b;
}
char x[],y[];
int d[][];
int main()
{
while(scanf("%s%s",&x,&y)!=EOF)
{
//memset(d,0,sizeof(d));
int lenx=strlen(x),leny=strlen(y);
for(int i=; i<=lenx; i++)
{
for(int j=; j<=leny; j++)
{
if(x[i-]==y[j-])
{
d[i][j]=d[i-][j-]+;
//printf("x[%d]=%c y[%d]=%c d[%d][%d]=%d %d\n",i-1,x[i-1],j-1,y[j-1],i-1,j-1,d[i-1][j-1],d[i][j]);
}
else
{
d[i][j]=max(d[i-][j],d[i][j-]);
// printf("x[%d]=%c y[%d]=%c d[%d][%d]=%d d[%d][%d]=%d %d\n",i-1,x[i-1],j-1,y[j-1],i-1,j,d[i-1][j],i,j-1,d[i][j-1],d[i][j]);
} }
}
printf("%d\n",d[lenx][leny]);
}
}

    

最新文章

  1. Python初学者之网络爬虫
  2. 文本模板转换工具包和 ASP.NET MVC
  3. HibernateTools实现pojo类 数据库schma mapping映射的相互转换
  4. Linux grep和find的区别
  5. SQL Server中的STUFF函数的使用
  6. Ecstore中Mootools和Jquery如何同时存在,解决冲突?
  7. HDU_1230——火星A+B,加法进制问题
  8. (转载)JS中的prototype
  9. C# 与 C++强强联合--C#中的指针
  10. CentOS7安装完毕,重新开机启动后显示: Initial setup of CentOS Linux 7 (core)
  11. 夏令营讲课内容整理 Day 2.
  12. 【原创】大数据基础之ElasticSearch(3)升级
  13. java.lang.RuntimeException: Invalid action class configuration that references an unknown class name
  14. 【BZOJ5336】[TJOI2018]party(动态规划)
  15. Java并发编程(五)-- Java内存模型补充
  16. 使用vue的v-for生成table , 给table加上序号
  17. R语言通过loess去除某个变量对数据的影响--CNV分析
  18. 第一天 hello world
  19. window下文件在Linux下文件乱码解决
  20. Delphi用户登录窗口框架

热门文章

  1. Android(java)学习笔记81:java异常处理机制
  2. 高德地图 JavaScript API 开发系列教程(一)
  3. jquery实现表格行的动态增加和删除
  4. 【VMware虚拟化解决方案】设计和配置VMware vCenter 5.5
  5. 关于环信的WebIm的SDK一些使用注意
  6. SharePoint 2010 获取列表全部定义方法
  7. Spring(3.2.3) - Beans(5): 集合属性的注入
  8. 分析Android程序之破解第一个程序
  9. sqlserver 公有表达式
  10. HTML5+J2EE实现文件异步上传