USACO Longest Prefix
2015-03-08 17:16
225 查看
题目大意:给出一个长字符串,问最长的前缀,使得这个前缀能用给出的一些元素组合而成
思路:暴力dp,dp[i]表示长度为i的前缀能否被表示
/*{ ID:a4298442 PROB:prefix LANG:C++ } */ #include<iostream> #include<fstream> #include<cstring> #include<algorithm> #define maxn 109 using namespace std; ifstream fin("prefix.in"); ofstream fout("prefix.out"); //#define fin cin //#define fout cout int dp[200009]; char premitive[maxn*3][maxn],ch[200009]; int check(int x,int y,int totle) { char temp[maxn],h=0; for(int i=x;i<=y;i++) { temp[++h]=ch[i]; } temp[h+1]='\0'; for(int i=1;i<=totle;i++) { if(strcmp(temp+1,premitive[i]+1)==0)return 1; } return 0; } int main() { int n,h=0; while(1) { fin>>(premitive[++h]+1); if(premitive[h][1]=='.'){h--;break;} } char c; int len=0; while(fin>>c) { if('A'<=c && c<='Z')ch[++len]=c; } ch[len+1]='\0'; dp[0]=1; for(int i=1;i<=len;i++) { for(int j=max(i-10,1);j<=i;j++) { if(check(j,i,h)&& dp[j-1]) { dp[i]=1;break; } } } int ans=0; for(int i=len;i>=1;i--) { if(dp[i]==1) { ans=i; break; } } fout<<ans<<endl; return 0; }
相关文章推荐
- USACO 2.3 The Longest Prefix (prefix)
- USACO2.3.1 The Longest Prefix 题解
- USACO Longest Prefix
- USACO / Longest Prefix最长前缀(DP)
- USACO:Longest Prefix简单dp
- USACO 2.3.1 Longest Prefix dp
- USACO Longest Prefix,DP
- USACO-Section 2.3 Longest Prefix (DP)
- USACO section2.3 Longest Prefix题解&代码
- USACO 2.3 The Longest Prefix
- USACO 2.3.1 Longest Prefix 解题报告
- USACO Longest Prefix 【水】
- USACO :Longest Prefix解题报告
- USACO 2.3.1 Longest Prefix
- usaco ★Longest Prefix 最长前缀
- USACO 2.3.1 The Longest Prefix
- USACO-Longest Prefix
- USACO 2.3.1 Longest Prefix 最长前缀
- usaco Longest Prefix
- USACO section 2.3 Longest Prefix(dp)