HDOJ1159 Common Subsequence(dp)
2015-10-15 09:31
429 查看
题目链接:点击打开链接
给出两个字符串, 问你最长公共子序列有多长.
lcs模板题目, 摘出求解过程:
第一步:先计算最长公共子序列的长度。
第二步:根据长度,然后通过回溯求出最长公共子序列。
设一个C[i,j]: 保存Xi与Yj的LCS的长度。
递推方程为:
AC代码:
给出两个字符串, 问你最长公共子序列有多长.
lcs模板题目, 摘出求解过程:
第一步:先计算最长公共子序列的长度。
第二步:根据长度,然后通过回溯求出最长公共子序列。
设一个C[i,j]: 保存Xi与Yj的LCS的长度。
递推方程为:
AC代码:
#include "iostream" #include "cstdio" #include "cstring" #include "algorithm" using namespace std; char s1[10005], s2[10005]; int dp[10005][10005] = {0}; int main(int argc, char const *argv[]) { while(scanf("%s%s", s1, s2) != EOF) { int len1 = strlen(s1), len2 = strlen(s2); for(int i = 0; i < len1; ++i) for(int j = 0; j < len2; ++j) if(s1[i] == s2[j]) dp[i + 1][j + 1] = dp[i][j] + 1; else dp[i + 1][j + 1] = max(dp[i][j + 1], dp[i + 1][j]); printf("%d\n", dp[len1][len2]); } return 0; }
相关文章推荐
- JSP内置对象request
- UIScrollView scrollsToTop Property
- String、StringBuilder、StringBuffer 用法比较
- SignalR QuickStart
- EasyUI datagrid 删除的时候无法正确找到重复记录row index的问题
- UIcollectionViewCell(UItableviewcell)长按删除操作
- RequestDispatcher请求转发方法
- UIWindow & UIWindowLevel笔记
- [图解]Android下Invalid layout of java.lang.String at value的解决
- APUE CH10 Signals
- programming-challenges Distinct Subsequences (111102) 题解
- UINavigationController + UIScrollView组合,视图尺寸的设置探秘(一)
- 【UIKit-65-1】#import <UIKit/UINavigationController.h>UINavgationVC基础
- NSInteger,NSUInteger,NSNumber
- 基于arduino2560的tc35 GSM的使用
- cordova ionic build(待整理)
- map根据value从大到小排序
- UITextView添加背景图片
- 设计模式——建造者模式(Builder)
- ndk-build