动态规划 04 (公共子序列)
来源:互联网 发布:数据挖掘及应用是什么 编辑:程序博客网 时间:2024/05/29 11:37
04 公共子序列
给两个字符串,求两个字符串的最长的公共子字符串。
用dp【i】【j】表示s的第 i个字符与ss的第 j个字符的子序列长度,要注意s,ss是从【0】开始的,所以dp【i】【j】实际上是s【i-1】与ss【j-1】的结果。
公式:当s【i-1】==ss【j-1】时, dp【i】【j】=dp【i-1】【j-1】+1;
不等于时,dp【i】【j】=max{dp【i】【j-1】,dp【i-1】【j】}。
代码如下:
#include<bits/stdc++.h>using namespace std; int main() { char s[250],ss[250]; while(cin>>s>>ss) { int dp[250][250]; int i,j,l,ll; l=strlen(s); ll=strlen(ss); for(i=0;i<l;i++) dp[i][0]=0; for(j=0;j<ll;j++) dp[0][j]=0; for(i=1;i<=l;i++) for(j=1;j<=ll;j++) { if(s[i-1]==ss[j-1]) dp[i][j]=dp[i-1][j-1]+1; else dp[i][j]=max(dp[i][j-1],dp[i-1][j]); } cout<<dp[l][ll]<<endl; } return 0; }
0 0
- 动态规划 04 (公共子序列)
- 动态规划—04公共子序列
- 动态规划练习04:公共子序列
- 最长公共子序列(动态规划)
- 最长公共子序列(动态规划)
- 最长公共子序列(动态规划)
- 最长公共子序列(动态规划)
- 最长公共子序列(动态规划)
- 最长公共子序列(动态规划)
- 最长公共子序列(动态规划)
- 最长公共子序列(动态规划)
- 最长公共子序列(动态规划)
- 动态规划(最大公共子序列)
- 动态规划-公共子序列
- 动态规划-公共子序列
- 动态规划:公共子序列
- 动态规划 公共子序列
- 动态规划练习一 04:公共子序列
- [BZOJ]3444: 最后的晚餐 并查集
- 日常生活小技巧 -- markdown编辑器
- 使用一组点画出平滑的曲线
- 17.4.17 漫画与人脸识别(二) WebCaricature: a benchmark for caricature face recognition 小感
- weterert
- 动态规划 04 (公共子序列)
- 【MFC】 MFC添加控制台Console进行调试
- 【ssm个人博客项目实战05】easy ui datagrid实现数据的分页显示
- 剑指offer 扑克牌顺子
- Web 图片Base64编码
- Exynos4412 uboot2013.1移植B
- Android studio导入Github上的library开源库
- 计算机专用英语词汇1500词
- 设计模式-策略模式