字典树模板题,每次更新修改节点个数即可
#include<cstring> #include<algorithm> #include<cstdio> #include<queue> #include<cstdlib> #include<cmath> using namespace std; char s[10010]; int k[100010][30],ans,cnt; int main() { while(scanf("%s",s+1)!=EOF) { int dep=0; int n=strlen(s+1); int pos=0; for (int i=1;i<=n;i++) { int p=s[i]-'A'; dep++; if (k[pos][p]==0) { k[pos][p]=++cnt; pos=cnt; ans++; } else { pos=k[pos][p]; } } } printf("%d",ans+1); return 0; }