hdu1159最长公共子序列dp
来源:互联网 发布:如何应聘淘宝模特 编辑:程序博客网 时间:2024/06/05 23:45
dp就是先把大的问题划分成小问题,然后分别解决,不管有用没用,先引入一个数组,把算过的东西保存起来,有的时候从后往前,有的时候从前往后调用数组里的东西,大概就是这样!
最长公共子序列需要一个二维的表,dp[i][j],存的是A[i]和B[j]的最长公共子序列,扫描两个序列中同一位置的两个字符,如果一样,就是长度为i,j的公共子串+1,如果不一样,则需要比较,看看是“舍弃”哪一个字符比较合适,然后把数据存下来,调用。
自己打一张表会理解得深刻一些。
AC代码☟
#include<iostream>using namespace std;#include<string.h>#include<algorithm>#include<string>int dp[1005][1005];int main(){ string a,b; while(cin>>a>>b) { int len1=a.size(); int len2=b.size(); memset(dp,0,sizeof(dp)); //置零 int i,j; for(i=1;i<=len1;i++) for(j=1;j<=len2;j++) { if(a[i-1]==b[j-1]) //因为这个表代表的是长度为i和j的A、B串的最长公共子序列,而字符串的长度和位置是差1的。 dp[i][j]=dp[i-1][j-1]+1; else dp[i][j]=max(dp[i-1][j],dp[i][j-1]); } /*for(i=0;i<=len1;i++) { for(j=0;j<=len2;j++) printf("%d ",dp[i][j]); printf("\n"); }*/ printf("%d\n",dp[len1][len2]); } return 0; }
感觉最长公共子序列这个表确实很精彩!
阅读全文
0 0
- hdu1159(dp)最长公共子序列
- hdu1159最长公共子序列dp
- HDU1159 最长公共子序列
- 最长公共子序列(hdu1159)
- HDU1159 最长公共子序列
- hdu1159(最长公共子序列)
- hdu1159 最长公共子序列
- HDU1159最长公共子序列
- HDU1159最长公共子序列
- hdu1159 - Common Subsequence (dp 最长公共子序列问题)
- hdu1159 Common Subsequence 最长公共子序列 经典DP
- hdu1159(最长公共子序列+dp)java
- Common Subsequence hdu1159 最长公共子序列
- HDU1159-朴素的最长公共子序列
- LCS最长公共子序列HDU1159
- 最长公共子序列:HDU1159 Common Subsequence
- HDU1159 Common Subsequence 最长公共子序列
- HDU1159 &&POJ1458最长公共子序列(字符串)
- lvm卷管理和快照卷
- Imatest破解及安装
- [LeetCode]235. Lowest Common Ancestor of a Binary Search Tree
- HTML5 video标签的poster图片如何填充整个标签区域
- 排序算法(python)-归并排序
- hdu1159最长公共子序列dp
- js中top.location.href、parent.location.href用法
- oracle 查看隐含参数语句
- 在JTable单元格上 加入组件,并赋予可编辑能力 [转] 表格(单元格放置组件)
- Django项目实践(一)工具版本说明及项目的创建
- Java常用基础知识(20个)
- python爬虫进阶(九):基于Page Rank的顺序调整
- Hadoop、Spark系列(一)拨云见雾
- 数据库事务的隔离等级