poj 1458 Common Sequence--动态规划
来源:互联网 发布:淘宝少发了一件怎么办 编辑:程序博客网 时间:2024/05/21 07:13
问题描述:
给定两个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,称Z是序列X和Y的公共子序列
比如样例输入:
abcfbc abccab
样例输出
4
分析:1、确定状态: f[i][j]:表示前一个字符的前i位于后一个字符的前j位的最长公共子序列长度
2、确定状态转移方程:
if x[i]==y[j] 长度为i的子序列和长度为j的最长公共子序列就是长度为i-1和长度为j-1的子序列中最长的序列加1,即f[i][j]=f[i-1][j-1]+1
if x[i]!=y[j] —第一个序列长度为i的子序列和第二个序列中长度为j的子序列的公共子序列中x[i]和y[j]不同时出现。
—也就是说在x[0]~x[i]和y[0]~y[i]的最长公共子序列实际上与x[0]~x[i-1]和 y[0]~y[i]的最长公共子序列一样或者与x[0]~x[i]和 y[0]~y[i-1]的最长公共子序列一样
— 即:f[i][j]=max(f[i - 1][j] ,f[i][j - 1])
举例:
写程序时注意的问题:1.写了好几次都是wrong answer 造成的原因是因为:数组开小了,刚开始开的是200,后来扩大到999
2.while(scanf("%s%s",x,y)!=EOF)注意x,y此时为字符串型
#include <iostream>#include <stdio.h>#include <algorithm>#include <string>using namespace std;int main(){ char x[999],y[999]; int f[1000][1000];// 很容易出错 int m,n; while(scanf("%s%s",x,y)!=EOF) { m=strlen(x);n=strlen(y); for(int i=0;i<=m;i++) { f[i][0]=0; } for(int j=0;j<=n;j++) { f[0][j]=0; } for(int i=1;i<=m;i++) { for(int j=1;j<=n;j++) { if(x[i-1]==y[j-1]) f[i][j]=f[i-1][j-1]+1; else f[i][j]=max(f[i-1][j],f[i][j-1]); } } printf("%d\n",f[m][n]); } return 0;}
0 0
- poj 1458 Common Sequence--动态规划
- POJ 1458-Common Subsequence (动态规划)
- poj 动态规划DP - 1458 Common Subsequence
- POJ 1458 Common Subsequence (DP 动态规划)
- poj 1458 小白算法练习 Common Subsequence 动态规划
- 动态规划之前缀动态规划:poj 1458 Common Subsequence(最长公共子序列)
- POJ 1141 Brackets Sequence 动态规划
- 动态规划 Brackets Sequence poj 1141
- 动态规划 Brackets Sequence poj 1141
- POJ 1141 Brackets Sequence 动态规划
- poj 1141(Brackets Sequence 动态规划)
- 动态规划 poj 1458
- 动态规划总结五 poj 1458 Common Subsequence(最长公共子序列)
- L - Common Subsequence POJ 1458 (动态规划,LCS 最长公共子序列 )
- POJ 1458 Common Subsequence(最长公共子序列)__动态规划
- POJ 2127 Greatest Common Increasing Subsequence (动态规划)
- POJ 2127 Greatest Common Increasing Subsequence -- 动态规划
- POJ:2127 Greatest Common Increasing Subsequence(动态规划)
- long(Long)与int(Integer)之间的转换
- 云存储是否会致信息泄露?
- Android Gradle Plugin指南(六)——高级构建定制
- 算法01
- 同步/异步与阻塞/非阻塞的区别
- poj 1458 Common Sequence--动态规划
- Javascript 检测键盘按键信息及键码值对应介绍
- 最优乘车
- 浅析 Android操作HTTP
- ref和out的区别
- linux mtu 自动检测配置脚本(解决inode拨号上网问题)
- Codeforces Div. 2 #256-B. Suffix Structures
- 第十九章 TCP的交互数据流
- Lua中的元表和元方法