就是很普通的一个trie树,但是其中有一个新的知识点,所以记一下 其中son[][]表示trie树,p是移动时用到的点
using namespace std;
const int N=100010;
int son[N][26];
int idx,p,cnt[N];
void add(char *str)
{
int p=0;//加入一个新的单词时从根节点出发
for(int i=0;str[i];i++)
{
int u=str[i]-'A';
if(!son[p][u])//如果这个字母没有出现过,就要让它计入
{
son[p][u]=++idx;
p=son[p][u];
}
else
{
p=son[p][u];
}
}
cnt[p]++;//这个可以没有,是用来统计单词数的
}
int main()
{
char a[63];
while(scanf("%s",a)!=EOF)//这种情况下输入“Ctrl+z”就会退出
{
add(a);
}
cout<<idx+1;
return 0;
}