예제 #1
0
 char *strStr(char *haystack, char *needle) {
     int m = strlen(needle);
     if (m == 0) return haystack;
     vector<int> next = makenext(needle, m);
     vector<int> res = match(haystack, strlen(haystack), needle, m, next);
     if (res.size()>0){
         return haystack + res[0];
     }else{
         return NULL;
     }
     
 }
예제 #2
0
int main(){
    while(scanf("%d%d",&n,&m),n||m){
        pos=0;newnode();
        for(int i=0;i<n;i++){
            scanf("%s",s);
            insert(s,i);
        }
        for(int i=0;i<m;i++){
            scanf("%s",s);
            insert(s,-1);
        }
        makenext();
        ps=0;
        for(int i=0;i<pos;i++)
            if(i==0||flag[i]>0)pnt[ps++]=i;
        for(int i=0;i<ps;i++)
            bfs(i);
        printf("%d\n",dp());
    }
    return 0;
}