在每个单词之间放间隔字符的时候,不要忘记 trie 的数组也应该开到对应大小:
例如我的:
scanf("%d", &n);
for(int i = 1; i <= n; i++) {
scanf("%s", s+cur+1);
addt(s+cur, i);
cur += strlen(s+cur+1)+1;
s[cur] = '!';
}
然后开空间时:
int son[maxn][26];
结果 WA on #5(居然不是全WA,看来数据确实水)
更正后:
scanf("%d", &n);
for(int i = 1; i <= n; i++) {
scanf("%s", s+cur+1);
addt(s+cur, i);
cur += strlen(s+cur+1)+1;
s[cur] = 'z'+1;
}
开空间:
int son[maxn][27];
直接 A 过去了