HDU 1159 Common Subsequence (dp)
来源:互联网 发布:jiaoben linux 反斜线 编辑:程序博客网 时间:2024/06/04 19:49
Common Subsequence
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 42749 Accepted Submission(s): 19708
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.
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 abfcabprogramming contest abcd mnp
Sample Output
420
用线性dp发现会出现错误 aa a两个数列答案是 2
错误代码:
#include <stdio.h>#include<algorithm>#include<string.h> using namespace std;int main(int argc, char *argv[]){ char a[1001],b[1001]; while(scanf("%s %s",a,b)!=EOF) { int dp[1001]={0}; int i,j,k; int len1=strlen(a); int len2=strlen(b); for(i=0;i<len2;i++) { for(j=0;j<len1;j++) { if(b[i]==a[j]) { dp[j]=1; for(k=j-1;k>=0;k--) { dp[j]=max(dp[j],dp[k]+1); } } } } int max1=0; for(i=0;i<len1;i++) { max1=max(dp[i],max1); } printf("%d\n",max1); } return 0;}所以用矩阵类dp
#include <stdio.h>#include<string.h>int dp[1010][1010];int main(int argc, char *argv[]){int i,j;char a[1000],b[1000];while(scanf("%s %s",a,b)!=EOF) { int len1,len2; len1=strlen(a); len2=strlen(b); for(i=0;i<=len1;i++) { dp[0][i]=0; } for(i=0;i<=len2;i++) { dp[i][0]=0; } for(i=1;i<=len1;i++) { for(j=1;j<=len2;j++) { if(a[i-1]==b[j-1]) { dp[i][j]=dp[i-1][j-1]+1; } else { if(dp[i][j-1]>dp[i-1][j]) { dp[i][j]=dp[i][j-1]; } else { dp[i][j]=dp[i-1][j]; } } } } printf("%d\n",dp[len1][len2]); } return 0;}
阅读全文
0 0
- HDU 1159 Common Subsequence(还是DP)
- hdu 题目1159 Common Subsequence(DP)
- HDU 1159 Common Subsequence(dp LCS)
- HDU 1159 Common Subsequence (备忘录DP)
- hdu 1159 Common Subsequence(dp)
- hdu 1159 Common Subsequence (dp)
- Hdu oj 1159 Common Subsequence(dp)
- HDU 1159 Common Subsequence(基础dp)
- HDU 1159 Common Subsequence【LCS(dp)】
- HDU 1159 Common Subsequence (dp)
- hdu 1159 Common Subsequence #DP
- hdu 1159 Common Subsequence (dp)
- HDU--1159 -- Common Subsequence [DP]
- hdu 1159 Common Subsequence(dp)
- HDU 1159 Common Subsequence (dp)
- Common Subsequence(dp)HDU 1159
- HDU Common Subsequence (dp)
- Common Subsequence HDU dp
- 多次点击file上传,信息保存在js集合中,不覆盖上次点击信息,js上传多张图片
- Java线程:Callable和Future
- BASIC-28VIP试题 Huffuman树
- ETCD数据存储情况
- bzoj2648 SJY摆棋子【KD-tree模板】
- HDU 1159 Common Subsequence (dp)
- CSDN-markdown编辑器使用指南
- 大数据BI可视化工具:改变了企业高层的管理思维
- 反编译apk详解(apktool +apktool +jd-gui编译文件下载)
- PDF预览之word、excel、ppt转pdf,中文乱码问题
- Hadoop默认支持集成OSS,作为Hadoop兼容的文件系统
- 视频通信系统的关键技术与挑战
- vue-router 如何在当前路由下重新点击当前路由的router-link实现刷新
- BASIC-29VIP试题 高精度加法