记录编号 |
29331 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOI 2000]单词查找树 |
最终得分 |
100 |
用户昵称 |
QhelDIV |
是否通过 |
通过 |
代码语言 |
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;
}