⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 trie.txt

📁 acm 常用算法和代码库
💻 TXT
字号:
#include<iostream>
using namespace std;
char dic[1002][1002];
char word[1002];
int l,c,w,index;
int x,y,dri;
int my[]= {0,1,1,1,0,-1,-1,-1};
int mx[]= {-1,-1,0,1,1,1,0,-1};
typedef struct trietree
{
	struct trietree* next[26];
	int isword;
}
node;
struct ANS
{
	int x,y;
	char d;
}
ans[1002];
node root;
void insert(char *tar)
{
	node *p=&root;
	int id,i;
	while (*tar)
	{
		id=*tar-'A';
		if(p->next[id]==NULL)
		{
			p->next[id]=new node;
			p->next[id]->isword=0;
			for(i=0;i<26;++i)p->next[id]->next[i]=NULL;
		}
		p = p->next[id];
		tar++;
	}
	p->isword=index;
}
void search(int tx,int ty,int td)
{
	node *p = &root;
	int id;
	while (tx>=0&&tx<l&&ty>=0&&ty<c)
	{
		id=dic[tx][ty]-'A';
		if(p->next[id]==NULL)return;
		p = p->next[id];
		if(p->isword&&ans[p->isword].d==0)
		{
			ans[p->isword].x=x;
			ans[p->isword].y=y;
			ans[p->isword].d=dri+'A';
		}
		tx+=mx[td];
		ty+=my[td];
	}
}
int main()
{
	int i;
	scanf("%d%d%d",&l,&c,&w);
	index = 1;
	for (i=0;i<l;i++)scanf("%s",dic[i]);
	for (i=0;i<w;i++)
	{
		scanf("%s",word);
		insert(word);
		index++;
	}
	for(x=0;x<l;++x)
	for(y=0;y <c;++y)
	for(dri=0;dri<8;++dri)
	search(x,y,dri);
	for(i=1;i<=w;++i)
	printf("%d %d %c\n",ans[i].x,ans[i].y,ans[i].d);
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -