poj 3302 LCS水题
2013-09-29 20:39
316 查看
传送门
题意:问a串中能否找出子串等于b串,可以正着找,也可以逆着找。
思路:两边最长公共子序列,看长度能都否等于b串长度。
题意:问a串中能否找出子串等于b串,可以正着找,也可以逆着找。
思路:两边最长公共子序列,看长度能都否等于b串长度。
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int f[105][105]; char a[105],b[105]; int la,lb,ans; void LCS() { memset(f,0,sizeof(f)); for(int i=0;i<la;i++) { for(int j=0;j<lb;j++) { if(a[i]==b[j])f[i+1][j+1]=f[i][j]+1; else f[i+1][j+1]=max(f[i+1][j],f[i][j+1]); } } ans=max(ans,f[la][lb]); memset(f,0,sizeof(f)); for(int i=0;i<la;i++) { for(int j=0;j<lb;j++) { if(a[i]==b[lb-j-1])f[i+1][j+1]=f[i][j]+1; else f[i+1][j+1]=max(f[i+1][j],f[i][j+1]); } } ans=max(ans,f[la][lb]); } int main() { int t; scanf("%d",&t); while(t--) { ans=0; scanf("%s%s",a,b); la=strlen(a); lb=strlen(b); LCS(); if(ans==lb)cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }
相关文章推荐
- Poj 1936,3302 Subsequence(LCS)
- POJ 1159 Palindrome【LCS+滚动数组】【水题】
- Poj 1936,3302 Subsequence(LCS)
- POJ 3302 Subsequence(我的水题之路——子串判断)
- poj 1488 TEX Quotes 【水题】
- poj 1003 水题
- POJ 1159 Palindrome(LCS)
- poj 1003&&HDU 1056 && nyoj 156 Hangover【水题】
- poj 3111 二分水题
- poj 1003 hangover 水题
- POJ 1562 DFS水题练习
- ACM: 水题 分数运算 poj 3979
- POJ1159:Palindrome(LCS)
- POJ 1083 水题
- POJ 1159 - Palindrome 优化空间LCS
- POJ 3753 根据关键字进行字符串拷贝(水题)
- poj-3481-Double Queue-splay树的水题
- 算法导论第二章POJ水题
- Poj2656(水题)
- POJ 1942 Paths on a Grid (水题)