思路
正好练习一下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; }