hdu 4681(多校联赛8 最长公共子序列)
来源:互联网 发布:怎么做软件 编辑:程序博客网 时间:2024/05/14 07:55
点击打开链接
题意:
给你三个字符串a,b,c,c是a和b的子序列,求d串的最大长度,d串满足:c是d的子串。
直接求c在a和b中出现的前后位置的最长公共子序列。
ab最大公共串+c串+ab最大公共串,这才是d的长度。。
#include"stdio.h"#include"string.h"#define N 1005int dp1[N][N];int dp2[N][N];char a[N],b[N],c[N];int l1,l2,l3,cnt;struct node{int l,r;}A[N*100];int max(int a,int b){return a>b?a:b;}void init(){int i,j;l1=strlen(a+1);l2=strlen(b+1);l3=strlen(c+1);memset(dp1,0,sizeof(dp1));for(i=1;i<=l1;i++){for(j=1;j<=l2;j++){if(a[i]==b[j])dp1[i][j]=max(dp1[i-1][j-1]+1,max(dp1[i-1][j],dp1[i][j-1]));else dp1[i][j]=max(dp1[i-1][j],dp1[i][j-1]);}}memset(dp2,0,sizeof(dp2));for(i=l1;i>=1;i--){for(j=l2;j>=1;j--){if(a[i]==b[j])dp2[i][j]=max(dp2[i+1][j+1]+1,max(dp2[i+1][j],dp2[i][j+1]));else dp2[i][j]=max(dp2[i+1][j],dp2[i][j+1]);}}}void fun(char *s,char *ss,int l){int i,j;for(i=1;i<=l;i++){if(s[i]==ss[1]){int k=1;for(j=i;j<=l;j++){if(k<=l3&&s[j]==ss[k])k++;if(k>l3&&s[j]==ss[l3]){A[cnt].l=i;A[cnt++].r=j;break;}}}}}int main(){int T;int t=1;int i,j;scanf("%d",&T);getchar();while(T--){gets(a+1);gets(b+1);gets(c+1);init();cnt=0;fun(a,c,l1);int tt=cnt-1;fun(b,c,l2);int ans=0;for(i=0;i<=tt;i++){for(j=tt+1;j<cnt;j++){int ttt;ttt=dp1[A[i].l-1][A[j].l-1]+dp2[A[i].r+1][A[j].r+1];if(ttt>ans)ans=ttt;}}printf("Case #%d: %d\n",t++,ans+l3);}return 0;}
- hdu 4681(多校联赛8 最长公共子序列)
- hdu 1159 (最长公共子序列)
- hdu 1159(最长公共子序列)
- hdu 1159(最长公共子序列)
- hdu 4681 String (动态规划-最长公共子序列)
- 最长公共子序列 最长递增子序列(和) 最长递增公共子序列 最长(连续)子序列乘积(HDU)--dp
- HDU 4681 String 正反求最长公共子序列+枚举
- hdu 1159 Common Subsequence ***poj1458(最长公共子序列)
- HDU 4512 最长公共上身子序列(加强)
- hdu 2144 (并查集+最长公共子序列)
- hdu 1080 (DP LCS最长公共子序列)
- 【mark】最长公共子序列(poj 1458+hdu 1159)
- hdu 1423(最长公共递增子序列)
- hdu 1503(最长公共子序列的升级版)
- HDU 1159:Common Subsequence(最长公共子序列)
- hdu 1159 Common Subsequence(最长公共子序列)
- HDU 1159 Common Subsequence(最长公共子序列)
- HDU 1159 Common Subsequence(最长公共子序列)
- const和mutable关键字
- WebView播放视频
- getting start with storm 翻译 第七章 part-2
- centos配置eclipse
- Twitter 高并发高可用架构
- hdu 4681(多校联赛8 最长公共子序列)
- HDU 4349 Xiao Ming's Hope 2012 Multi-University Training Contest 5
- uva 10739
- Linux Java连接MySQL数据库
- 具有动画效果的对话框
- arm9裸机开发之蜂鸣器
- uva1398 - Meteor
- 关于在VS2005中,打开画面设计界面发生非预期错误的解决方法
- 杭电1022