hdu1159 LCS
来源:互联网 发布:matlab 字符串矩阵 编辑:程序博客网 时间:2024/06/06 20:25
这题没问题,题目提交的时候略坑,开200*200的数组结果WA,开了1000*1000的数组然后AC了,好奇怪的感觉,不知道为什么
设序列X=【x1,x2,x3….xm】,Y =【y1,y2,y3,…..yn】的最长公共子序列为Z=【z1,z2,z3……zk】
则
(1)若Xm = Yn则Zk = Xm = Yn,且Zk-1是Xm-1和Yn-1的最长公共子序列;
(2)若Xm != Yn,且Zk != Xm,则Z是Xm-1和Y的最长公共子序列;
(3) 若 Xm != Yn,且Zk != Yn,则Z是X和Yn-1的最长公共子序列;
0 i=0,j=0
C[i][j] = C[i-1][j-1] +1 i,j>0;Xi == Yj
max{C[i-1][j],C[i][j-1]} i,j >0,Xi!=Yj 转移方程
#include <cstdio>#include <iostream>#include <cstring>using namespace std;char X[1010],Y[1010];int C[1010][1010];void LCSLength(int m,int n,char x[],char y[]){int i,j;for(i = 1; i <= m; i++){C[i][0] = 0;}for(i = 1; i <= n; i++){C[0][i] = 0;}for(i = 1; i <= m; i++){for(j = 1; j <= n; j++){ if(x[i-1] == y[j-1]){ C[i][j] = C[i-1][j-1] + 1;}else{C[i][j] = max(C[i-1][j],C[i][j-1]);}}}}int main(){while(scanf("%s %s",X,Y)!=EOF ){int m = (int)strlen(X); int n = (int)strlen(Y);LCSLength(m,n,X,Y);cout<<C[m][n]<<endl;}return 0;}
- hdu1159 LCS
- HDU1159 Common Subsequence (LCS)
- hdu1159 LCS模板题
- HDU1159:Common Subsequence(LCS)
- hdu1159 Common Subsequence(LCS)
- Hdu1159-Common Subsequence-【LCS】
- HDU1159 && POJ1458:Common Subsequence(LCS)
- HDU1159 && POJ1458:Common Subsequence(LCS)
- hdu1159(LCS模板题)
- hdu1159 Common Subsequence(LCS)
- 【HDU1159】Common Subsequence(LCS/DP)
- HDU1159 Common Subsequence (LCS)
- HDU1159 && POJ1458 Common Subsequence (LCS)
- HDU1159 : Common Subsequence(LCS)
- Common Subsequence(hdu1159(LCS))
- LCS最长公共子序列HDU1159
- HDU1159 && POJ1458 Common Subsequence (LCS模版题)
- hdu1159 LCS最长公共子序列
- [Note]ubuntu下jdk的安装过程
- double和float的区别
- 多线程下载图片
- Spring容器对象(BeanFactory)
- Linux下面如何进行C语言编程
- hdu1159 LCS
- tableview,基本属性图片详细解释
- Java进阶:Java中堆和栈的区别
- 数据库设计十四个技巧
- 都要学C
- ios文件系统架构图,图片解说
- Python基础01 Hello World!
- iOS图片倒影效果的2种实现
- [Android实例] 基于ffmpeg的Android播放器开源代码