POJ 2001(傻逼版)

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int ch[300001][26];
int id,p[30001];
char s[10001][25];
void insert(char *s)
{
	int cur=1,i;
	for(i=0;s[i];i++)
	{
		if(!ch[cur][s[i]-'a'])
			ch[cur][s[i]-'a']=++id;
		cur=ch[cur][s[i]-'a'];
		p[cur]++;
	}
}
void query(char *s)
{

	int cur=1,i;
	for(i=0;s[i];i++)
	{
		cur=ch[cur][s[i]-'a'];
		if(p[cur]==1)
		{
			i++;
			break;
		}
	}
	s[i]='\0';
	puts(s);
}
int main()
{	
	//memset(p,0,sizeof(p));當時一不小心就加了個memset,結果一直ML,後來百度了一下才知道,全局變量如果沒有初始化時沒有分配空間的。
	//memset(ch,0,sizeof(ch));
	id=1;
	int i=0,j;
	while(gets(s[++i]))	insert(s[i]);
	for(j=1;j<=i;j++)
	{
		printf("%s ",s[j]);
		query(s[j]);
	}
	return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章