HDU 1159 -Common Subsequence
来源:互联网 发布:巨型加农炮升级数据 编辑:程序博客网 时间:2024/06/05 19:06
题目链接
题目分析
题意
每行输入两个字符串,求这两个字符串的最长公共子序列。
思路
子序列:
举例:abdfieeow 中(按顺序)adf、abow等都是其子序列。
最长子序列是动态规划(DP)的典型例子。
LCS(x,y)即字符串x和y的最长公共子序列。
当i=0或是j=0时
dp[i][j]=0
当a[i-1]==b[j-1]时
dp[i][j]=dp[i-1][j-1]+1
当a[i-1]!=b[j-1]时
dp[i][j]=max(dp[i-1][j],dp[i][j-1])
代码
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;#define M 5000int dp[M][M];//a中前M个字符串与b中前M个字符串的最长公共子序列的长度 char a[M],b[M];int main(){ //freopen("data.txt","r",stdin); int i,j,la,lb; while(~scanf("%s%s",a,b)){ la=strlen(a); lb=strlen(b); for(i=0;i<la;i++) dp[i][0]=0; for(j=0;j<lb;j++) dp[0][j]=0; for(i=1;i<=la;i++){ for(j=1;j<=lb;j++){ if(a[i-1]==b[j-1]) dp[i][j]=dp[i-1][j-1]+1; else dp[i][j]=max(dp[i-1][j],dp[i][j-1]); } } printf("%d\n",dp[la][lb]); } return 0;}
0 0
- hdu 1159 Common Subsequence
- HDU 1159 Common Subsequence
- HDU 1159 Common Subsequence
- hdu 1159 Common Subsequence
- HDU 1159 Common Subsequence
- HDU 1159 Common Subsequence
- hdu 1159 Common Subsequence
- hdu 1159 Common Subsequence
- hdu 1159 Common Subsequence
- Common Subsequence hdu 1159
- HDU 1159 Common Subsequence
- HDU 1159 Common Subsequence
- hdu 1159 Common Subsequence
- hdu 1159 Common Subsequence
- HDU 1159 Common Subsequence
- hdu 1159 Common Subsequence
- hdu 1159 Common Subsequence
- hdu 1159 Common Subsequence
- hdu1598find the most comfortable road
- Palindrome Number
- 安装oracle11g INS-30131执行安装程序验证所需的初始设置失败的解决方法
- hpp
- android注解dagger
- HDU 1159 -Common Subsequence
- update set命令用来修改表中的数据
- ionic之动态改变icon大小
- C# 跨线程控制lable控件坐标点
- HDU 4707 Pet(BFS,统计树节点深度)
- BT盒子种子搜索神器v4.2.1.0去广告官方绿色版
- jQuery源码研究分析学习笔记-jQuery.fn.init()(五)
- [USACO Training] Section 1.2
- Android官方版本号一览表