POJ 3267 The Cow Lexicon dp

来源:互联网 发布:js数组添加数组 编辑:程序博客网 时间:2024/04/27 16:58

算法想不出来。。看得杨的blog杨大神

代码如下

#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <algorithm>#include <iostream>#define inf 0x3f3f3f3fusing namespace std;char s[800];char str[800][800];int dp[800];int len[800];int main(){    int n, l;    int i, j;    while(cin >> n >> l){        memset(dp,0,sizeof(dp));        scanf("%s", s);        for(i = 0;i < n;i++){            scanf("%s", str[i]);            len[i] = strlen(str[i]);        }        for(i = l-1;i >= 0;i--){            dp[i] = dp[i+1]+1;            for(j = 0;j < n;j++){                if(str[j][0]==s[i]&&l-i>=len[j]){                    int ss = i;                    int t = 0;                    while(ss < l){                        if(str[j][t]==s[ss]){                            t++;                        }                        ss++;                        if(t==len[j]){                            dp[i] = min(dp[i],dp[ss]+ss-i-len[j]);                            break;                        }                    }                }            }        }        printf("%d\n", dp[0]);    }    return 0;}

0 0
原创粉丝点击