只需要进行插入操作就好了,这里只询问Trie树有多少个节点,那么只要记录新插入多少个节点就好了。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 100010;
char str[N];
int tr[N][26],idx;
void insert(char str[]) {
int p = 0;//当前节点所在位置
for (int i = 0; str[i]; i ++ ) {
int ch = str[i] - 'A';
if (!tr[p][ch]) tr[p][ch] = ++ idx;//Trie树上没有,插入一个新的节点
p = tr[p][ch];//更新p值
}
}
int main() {
while (cin >> str) {
insert(str);
}
cout << idx + 1<< endl;//默认根节点为0,所以加1
return 0;
} 
京公网安备 11010502036488号