思路
正好练习一下Trie的板子,用二维数组去装,son[i][j]表示编号i第j个儿子的编号。
因为有无字符的根节点,所以答案是从1开始的,然后往下添加新结点,答案就是最大节点的编号。
代码
#include<bits/stdc++.h>
using namespace std;
int son[1000005][30],cnt=1;
char str[70];
int main(){
memset(son,0,sizeof(son));
while(scanf("%s",str)!=EOF){
int now=1;
for(int i=0;i<strlen(str);i++){
if(!son[now][str[i]-'A']){//建立新节点
son[now][str[i]-'A']=++cnt;
now=son[now][str[i]-'A'];
}else now=son[now][str[i]-'A'];
}
}
cout<<cnt<<endl;
return 0;
} 
京公网安备 11010502036488号