- 用一个数组存放节点
- 没别的了
代码
#include<bits/stdc++.h>
using namespace std;
char str[100];
int ans,T[200000][26]={-1};
void f(){
int root=0,t,len=strlen(str);
for(int i=0;i<len;i++){
t=str[i]-'A';
if(T[root][t]==-1) //如果没有该节点
T[root][t]=ans++;//保存节点
root=T[root][t];//下一个字符的子树编号
}
}
int main(){
ans=1;//包括根节点
memset(T,-1,sizeof(T));
while(scanf("%s",str)!=EOF)
f();
cout<<ans<<endl;
return 0;
}