poj 1204 Word Puzzles 字典树
2011-04-20 16:38
267 查看
Word Puzzle
字典树实现
AC自动机实现
字典树实现
AC自动机实现
/* * File: main.cpp * Author: Mi * * Created on 2011年4月20日, 下午4:10 */ #include <cstdlib> #include <stdio.h> #include <algorithm> #include <string.h> #define KIND 26 #define MAX 10005 using namespace std; /* * */ char msg[MAX][MAX]; int d[8][2]={{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1}},n,m; int ans[MAX][3],len[MAX]; bool ok(int x,int y) { return x>=0&&x<n&&y>=0&&y<m; } struct node { node *fail; node *next[KIND]; int num; node() { fail=NULL; memset(next,NULL,sizeof(next)); num=-1; } }*root; void Insert(node *root,char *str,int num) { node *p=root; for(int i=0;str[i];i++) { int Index=str[i]-'A'; if(p->next[Index]==NULL) p->next[Index]=new node(); p=p->next[Index]; } p->num=num; } void Search(node *root,int x,int y,int k) { node *p=root; int xx=x,yy=y; while(ok(xx,yy)) { int Index=msg[xx][yy]-'A'; if(p->next[Index]==NULL) break; else p=p->next[Index]; if(p->num!=-1) { ans[p->num][0]=xx-len[p->num]*d[k][0]; ans[p->num][1]=yy-len[p->num]*d[k][1]; ans[p->num][2]=k+'A'; } xx+=d[k][0]; yy+=d[k][1]; } } void solve() { int w; root=new node(); scanf("%d%d%d",&n,&m,&w); for(int i=0;i<n;i++) scanf("%s",msg[i]); for(int i=0;i<w;i++) { char str[MAX]; scanf("%s",str); Insert(root,str,i); len[i]=strlen(str)-1; } for(int i=0;i<n;i++) for(int j=0;j<n;j++) // if(i==0||j==0||i==n-1||j==m-1) for(int k=0;k<8;k++) Search(root,i,j,k); for(int i=0;i<w;i++) printf("%d %d %c/n",ans[i][0],ans[i][1],ans[i][2]); } int main(int argc, char** argv) { solve(); return 0; }
相关文章推荐
- POJ 1204 Word Puzzles // 字典树,枚举, 搜索
- POJ 1204Word Puzzles 字典树
- 【字典树】 poj1204 Word Puzzles
- 【字典树】poj 1204 Word Puzzles(外:poj Shortest Prefixes)
- poj 1204 Word Puzzles(字典树)
- poj 1204 Word Puzzles 字典树 + 暴搜
- poj 1204 Word Puzzles(字典树)
- POJ 1204 Word Puzzles AC自动机 -
- POJ 1204 Word Puzzles(AC自动机)
- 【POJ】1204 Word Puzzles
- POJ 1204 Word Puzzles 笔记
- [POJ 1204]Word Puzzles(Trie树暴搜&AC自动机)
- POJ-1204 Word Puzzles AC自动机 多串匹配
- 【POJ1204】Word Puzzles【Trie】【暴力】
- POJ-1204-Word Puzzles
- POJ 1204 Word Puzzles - dic_tree + DFS
- poj 1204 Word Puzzles 静态trie树解决多模式串匹配问题
- poj 1204 Word Puzzles
- poj 1204 Word Puzzles
- 【POJ1204】Word Puzzles——AC自动机