题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159

Common Subsequence

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 25416    Accepted Submission(s):
11276

Problem 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.
The program
input is from a text file. Each data set in the file contains two strings
representing the given sequences. The sequences are separated by any number of
white spaces. The input data are correct. 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
 
题目大意:找到最长公共子序列,如:abcfbc abfcab 这个的最长公共子序列为abfc或abcb 所以输出4!
 
题目思路:定义一个dp[i][j]的二维数组。用来表示最长的公共子序列数。i表示第一个字符串的开始位置,j表示第二个字符串的开始位置。也就是从后向前推。dp[0][0]表示从第0个到第n个的最长公共子序列数,因为结尾就是n。dp[n][n]表示的是第n个到第n个的最长公共子序列。
 
详见代码。
 #include <iostream>
#include <cstdio>
#include <cstring> using namespace std; int dp[][]; int main()
{
char a[],b[];
while (~scanf("%s%s",a,b))
{
int len1=strlen(a);
int len2=strlen(b);
memset(dp,,sizeof(dp));
for (int i=len1-;i>=;i--)
{
for (int j=len2-;j>=;j--)
{
if (a[i]==b[j])
dp[i][j]=dp[i+][j+]+;
else
dp[i][j]=max(dp[i+][j],dp[i][j+]);
}
}
printf ("%d\n",dp[][]);
}
return ;
}
 

最新文章

  1. [转载]Docker的安装配置及使用详解
  2. java抽象语法
  3. ASM:《X86汇编语言-从实模式到保护模式》第13章:保护模式下内核的加载,程序的动态加载和执行
  4. Handler消息传递机制
  5. CSS布局基础之二认识Viewport
  6. codeforces 459C Pashmak and Buses 解题报告
  7. 原创-兼容IE8的placeholder
  8. servletConfig对象
  9. [Introduction to programming in Java 笔记] 1.3.8 Gambler&#39;s ruin simulation 赌徒破产模拟
  10. 【算法】最长公共子序列(nlogn)
  11. Goldbach&#39;s Conjecture(哥德巴赫猜想)
  12. asp.net下cookie 的基础使用
  13. 【翻译】C#和.NET核心快速参考
  14. POJ 2234 Matches Game(取火柴博弈1)
  15. win10 jkd配置注意事项
  16. Linux c readdir是非线程安全,需用readdir_r,要注意用静态变量当做返回值的函数的非线程安全性
  17. Scala编程入门---面向对象编程之Trait
  18. SpringMVC类型转换,验证
  19. [转] React 中组件间通信的几种方式
  20. wordpress文章页两侧添加分页导航箭头

热门文章

  1. kafka启动出现:Unsupported major.minor version 52.0 错误
  2. 实现一个可以实时提示的textarea组件
  3. 每天网络半小时(MAC数据包在哪里合并的)
  4. RT-thread国产实时操作系统概述
  5. BZOJ 1263 整数划分(数学+高精度)
  6. 【bzoj2938】[Poi2000]病毒 AC自动机
  7. Python 源码剖析(四)【LIST对象】
  8. css的存在形式及优先级
  9. Andorid API Package ---&gt;android.animation
  10. 算法训练 Bus Tour