思路

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