记录编号 29331 评测结果 AAAAAAAAAA
题目名称 [NOI 2000]单词查找树 最终得分 100
用户昵称 GravatarQhelDIV 是否通过 通过
代码语言 C++ 运行时间 0.026 s
提交时间 2011-10-21 13:57:44 内存使用 3.28 MiB
显示代码纯文本
#include<fstream>
#include<cstdlib>
using namespace std;
ifstream fin("trie.in");
ofstream fout("trie.out");

int PN=1;

class TREE
{
public:
	char Data;
	class TREE *pr[27];
};

TREE *CreatTree()
{
	int i;
	TREE *temp=(TREE *)malloc(sizeof(TREE));
	temp->Data='\0';
	
	for(i=1;i<=26;i++)
	{
		temp->pr[i]=NULL;
	}
	return temp;
}

TREE *pnt=CreatTree();
TREE *L=pnt;

TREE *Insert(TREE *parent,char D)
{
	int i;
	TREE *temp=parent;
		if(parent->pr[D-'A'+1]!=NULL)	
			if(parent->pr[D-'A'+1]->Data==D)
				return parent->pr[D-'A'+1];
			
			
	temp->pr[D-'A'+1]=CreatTree();
	temp=temp->pr[D-'A'+1];
	temp->Data=D;
	
	PN++;
	
	return temp;

}

string T;

void init()
{
int i;
TREE *POINTER;
	for(;!fin.eof();)
	{
		fin>>T;
		POINTER=L;
		for(i=0;i<=T.length()-1;i++)
			POINTER=Insert(POINTER,T[i]);
	}
}

void INORDER_TREE_WALK(TREE *p)
{
int i;
	for(i=1;i<=26;i++)
	if(p->pr[i]!=NULL)
	{
		INORDER_TREE_WALK(p->pr[i]);
		fout<<p->Data;
		INORDER_TREE_WALK(p->pr[i]);
	}
}

int main()
{
	
	init();	
	
	fout<<PN<<endl;
	
	
	fin.close();
	fout.close();
	return 0;
}