hdu 4681 String
来源:互联网 发布:gta5帧数怎么优化 编辑:程序博客网 时间:2024/06/07 11:21
题目:hdu 4681 String
思路:预处理求正向逆向的最长公共子序列,枚举C串在A,B中出现的两头位置的最长公共子序列+C的长度
#include <cstring>#include <string>#include <algorithm>#include <cmath>#include <iostream>#include <cstdio>#include <vector>using namespace std;vector<pair<int,int> >va,vb;#define maxn 1010int dpr[maxn][maxn];int dpl[maxn][maxn];string a,b,c;void init(){memset(dpr,0,sizeof(dpr));memset(dpl,0,sizeof(dpl));for(int i=1;i<=a.size();i++)for(int j=1;j<=b.size();j++){if(a[i-1]==b[j-1])dpl[i][j]=dpl[i-1][j-1]+1;elsedpl[i][j]=max(dpl[i-1][j],dpl[i][j-1]);}for(int i=a.size();i>=1;i--)for(int j=b.size();j>=1;j--){if(a[i-1]==b[j-1])dpr[i][j]=dpr[i+1][j+1]+1;elsedpr[i][j]=max(dpr[i][j+1],dpr[i+1][j]);}}int main(){int t;int cas=0;scanf("%d",&t);while(t--){cin>>a>>b>>c;init();va.clear();vb.clear();int index;for(int i=0;i+c.size()<=a.size();i++){if(a[i]==c[0]){index=1;int tmp=i+1;while(index!=c.size() && tmp<a.size() ){if(a[tmp]==c[index]){index++;tmp++;}elsetmp++;}if(index==c.size())va.push_back(make_pair(i,tmp-1));}}for(int i=0;i+c.size()<=b.size();i++){if(b[i]==c[0]){index=1;int tmp=i+1;while(index!=c.size() && tmp<b.size() ){if(b[tmp]==c[index]){index++;tmp++;}elsetmp++;}if(index==c.size())vb.push_back(make_pair(i,tmp-1));}}int ans=0;int cnt;vector<pair<int,int> >::iterator aa=va.begin(),bb=vb.begin();for(aa=va.begin();aa!=va.end();aa++)for(bb=vb.begin();bb!=vb.end();bb++){cnt=c.size()+dpl[aa->first][bb->first]+dpr[aa->second+2][bb->second+2];ans=max(ans,cnt);}printf("Case #%d: %d\n",++cas,ans);}return 0;}
- HDU 4681 String
- HDU 4681 String
- hdu 4681 String
- hdu-4681-String
- hdu 4681 string
- hdu 4681 string
- HDU - 4681 String
- hdu 4681 String (LCS)
- HDU 4681 String(DP)
- HDU 4681 String
- HDU 4681 String dp
- string string string HDU
- hdu 4681 String(dp)
- HDU 4681 String (动态规划)
- HDU 4681 String 解题报告
- 简单dp-hdu-4681-String
- 【HDU】4681 String(DP)
- String HDU
- C语言中scanf()的用法!
- 大学里,有这样一群人
- NserviceBus翻译之FAQ:MsmqTransportConfig配置项
- UML关系(泛化,实现,依赖,关联(聚合,组合))
- UVa 573 The Snail(蜗牛)
- hdu 4681 String
- 多tomcat并行,用户名、密码及虚拟路径设置
- Linux系统中 bashrc 和 profile 的区别
- php缓存小技巧
- 使用Spring JavaMail发送邮件总结
- Hadoop中的fsimage和edits(能力工场--Hadoop)
- MFC实现数据库的基本操作
- poj-2479 简单DP
- JS面试题及答案