https://vjudge.net/contest/313050#problem/D
 
题意:给出两个字符串,问最长公共子序列为多长。
 
解法:dp[i][j] 表示x字符串前i个与y字符串前j个最长公共子序列的长度。
 
 
X = (x1 , x2 , x3 ,....,xn) , Y = (y1 , y2 , y3 ,.....,ym)
最长公共子序列。将问题分为三个子问题:
当xn == ym 时, 在x(n-1) 和 y(m-1)的两个序列的最长公共子序列上加一。
当xn != ym 时, 比较 x(n-1) 和 y(m) 的两个序列的最长子序列 与 x(n)和y(m-1)的两个序列的最长子序列 的最大值
#include <iostream>
#include <iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include <stdio.h>
#include <string.h>
using namespace std;
// X = (x1 , x2 , x3 ,....,xn) , Y = (y1 , y2 , y3 ,.....,ym) //最长公共子序列。将问题分为三个子问题:
//当xn == ym 时, 在x(n-1) 和 y(m-1)的两个序列的最长公共子序列上加一。。
//当xn != ym 时, 比较 x(n-1) 和 y(m) 的两个序列的最长子序列 与 x(n)和y(m-1)的两个序列的最长子序列 的最大值
char a[1009] , b[1009];//数组大小要合理
int dp[1009][1009] ; int main()
{
while(~scanf("%s%s" , a , b))
{
memset(dp , 0 , sizeof(dp));
int m = strlen(a);
int l = strlen(b); for(int i = 0 ; i < m ; i++)
{
for(int j = 0 ; j < l ; j++)
{
if(a[i] == b[j])
{
dp[i + 1][j + 1] = dp[i][j] + 1 ;
}
else
{
dp[i + 1][j + 1] = max(dp[i][j + 1] , dp[i + 1][j]) ;
}
}
} printf("%d\n" , dp[m][l]); } return 0;
}
 

dp(最长公共子序列)的更多相关文章

  1. hdu1159 dp(最长公共子序列)

    题意:给两个字符串,求这两个字符串的最长公共子序列的长度 因为之前集训的时候做过,所以现在即使会做也并不是什么稀奇的事,依旧为了自己的浅薄感到羞愧啊``` 解法就是通过两个字符串的每个字符互相比较,根 ...

  2. POJ 1159 Palindrome(区间DP/最长公共子序列+滚动数组)

    Palindrome Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 56150   Accepted: 19398 Desc ...

  3. poj1159--Palindrome(dp:最长公共子序列变形 + 滚动数组)

    Palindrome Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 53414   Accepted: 18449 Desc ...

  4. 经典dp 最长公共子序列

    首先,说明一下子序列的定义…… 一个序列A={a1,a2,a3,...,an},从中删除任意若干项,剩余的序列叫A的一个子序列. 很明显(并不明显……),子序列……并不需要元素是连续的……(一开始的时 ...

  5. HDU 1159 Common Subsequence【dp+最长公共子序列】

    Common Subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  6. POJ - 1458 Common Subsequence DP最长公共子序列(LCS)

    Common Subsequence A subsequence of a given sequence is the given sequence with some elements (possi ...

  7. hdu 1503:Advanced Fruits(动态规划 DP & 最长公共子序列(LCS)问题升级版)

    Advanced Fruits Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  8. POJ1458 Common Subsequence —— DP 最长公共子序列(LCS)

    题目链接:http://poj.org/problem?id=1458 Common Subsequence Time Limit: 1000MS   Memory Limit: 10000K Tot ...

  9. HDU 1159 Common Subsequence --- DP入门之最长公共子序列

    题目链接 基础的最长公共子序列 #include <bits/stdc++.h> using namespace std; ; char c[maxn],d[maxn]; int dp[m ...

  10. DP:LCS(最长公共子串、最长公共子序列)

    1. 两者区别 约定:在本文中用 LCStr 表示最长公共子串(Longest Common Substring),LCSeq 表示最长公共子序列(Longest Common Subsequence ...

随机推荐

  1. javascript Math取整&获取随机数

    1.方法介绍 Math.ceil(n) 上取整,大于等于n返回与它最接近的整数 Math.floor(n) 下取整,小于等于n返回与它最接近的整数 Math.round(n) 四舍五入取整 Math. ...

  2. 第三讲JdbcRealm及Authentication Strategy

    1.使用shiro框架来完成认证工作,默认情况下使用的是IniRealm.如果需要使用其他Realm,那么需要进行相关的配置. 2.ini配置文件讲解: [main] section是你配置应用程序的 ...

  3. 脚本_修改 Linux 系统的最大打开文件数量

    #!bin/bash#作者:liusingbon#功能:修改 Linux 系统的最大打开文件数量#追加两行配置参数到文件/etc/security/limits.conf的末尾,修改最大打开文件数量为 ...

  4. python常用模块学习3

    # # dic='{"name":"tang"}' # # f=open("hello",'w') # # f.write(dic) # # ...

  5. Read-Only Tables 只读表

    Put  a table into read-only  mode,which prevents DDL or DML changes during table maintenance Put the ...

  6. [NOI1999]生日蛋糕(搜索)

    [NOI1999]生日蛋糕 题目背景 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层 生日蛋糕,每层都是一个圆柱体. 设从下往上数第i(1<=i<=M)层蛋糕是半 ...

  7. Java文件处理之FileReader可输出中文字符

    import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public ...

  8. php array_fill()函数 语法

    php array_fill()函数 语法 作用:用键值填充数组.大理石平台价格 语法:array_fill(index,number,value) 参数: 参数 描述 index 必需.被返回数组的 ...

  9. CentOS 7.5 通过kubeadm部署k8s-1.15.0

    kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,kubeadm会对集群配置方面的一些实践做调整,通过实验k ...

  10. CSS入门基础学习一

    一.CSS样式 1.什么是CSS: CSS是指层叠样式表(Cascading Style Sheels),CSS通常为CSS样式表或层叠样式表,主要用于设置HTML文本内容,以及版本面的布局等 2.H ...