1、本题中的字典树的fail数组不可以边读入边处理
2、本题中的字典树的fail数组不可以使用DFS处理,如果你硬要用DFS处理,需要打记忆化并且用非正常逻辑(从下到上)处理
讲讲原因:
举个例子:
n=2,s1=′abcd′,s2=′bcd′
如果边读入边构造,在构造 s1 相关的点的fail数组的时候,fail应该指向 s2 相关的点,由于 s2 还未在字典树构造,会导致fail构造失败,这个也不是排序能解决的问题,因为可能存在 s1,s2 相互调用的情况,所以最好树全部建完再构造fail数组
同理,如果使用DFS构造,会发现 s1 fail指针指向 s2 ,并且在fail指针移动的时候会需要用到 s2 的fail指针,但 s2 的fail指针还未处理,所以会出问题