比赛 20120302 评测结果 C
题目名称 有道搜索框 最终得分 0
用户昵称 TBK 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2012-03-02 22:06:13
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <string>
#include <iomanip>
using namespace std;
int Compare(const void*elem1,const void*elem2)
{
	return *(int *)elem1 - *(int *)elem2;
}
int main(void)
{
	freopen ("horsea.in","r",stdin);
	freopen ("horsea.out","w",stdout);
	struct Node
{
	bool Flag;
	Node *Next[26];
	Node()
	{
		Flag=false;
		for(int i=0;i<26;i++)
		{
			Next[i]=NULL;
		}
	}
};

int n,s,top;

char c[100],ans[100];

void dfs(Node *p)
{
	int i;
	if(p->Flag)
	{
		s++;
		printf("%s ",ans);
	}
	if(s==8)
	{
		return;
	}
	for(i=0;i<26;i++)
	{
		if(p->Next[i]!=NULL)
		{
			ans[++top]='a'+i;
			dfs(p->Next[i]);
			ans[top--]=0;
			if(s==8)
			{
				return;
			}
		}
	}
}

int main()
{
	freopen("youdao.in","r",stdin);
	freopen("youdao.out","w",stdout);
	int i,j,t,l;
	Node *Head=new Node;
	Node *p=new Node;
	scanf("%d\n",&n);
	for(i=1;i<=n;i++)
	{
		memset(c,0,sizeof(c));
		scanf("%s\n",&c);
		l=strlen(c);
		p=Head;
		for(j=0;j<l;j++)
		{
			t=c[j]-'a';
			if(p->Next[t]==NULL)
			{
				Node *q=new Node;
				p->Next[t]=q;
				q=NULL;
				delete q;
			}
			p=p->Next[t];
		}
		p->Flag=true;
	}
	scanf("%d\n",&n);
	for(i=1;i<=n;i++)
	{
		memset(c,0,sizeof(c));
		scanf("%s\n",&c);
		l=strlen(c);
		p=Head;
		for(j=0;j<l;j++)
		{
			ans[j]=c[j];
			t=c[j]-'a';
			if(p->Next[t]==NULL)
			{
				printf("%s\n",c);
				goto l1;
			}
			p=p->Next[t];
		}
		s=0;
		top=l-1;
		dfs(p);
		printf("\n");
		l1:memset(ans,0,sizeof(ans));
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}