题目链接:https://vjudge.net/problem/UVA-11732
参考自:liuzibujian 的博客 https://blog.csdn.net/zengchen__acmer/article/details/24416217
解题思路:
①先说求得比较次数的思路,不考虑怎么建字典树:
(1)按照题中给的strcmp函数,for循环中比较一次,如果当前两字符不相同,那么判断if那个句子。
(2)也就是说 在第i位不同,就比较 2*(i-1)+1 = 2*i-1次
(3)那么我们建一颗trie树,每个节点储存当前情况下延伸出去的子节点的个数,记做 trie【i】.sum
遍历当前节点的子节点与当前正在插入的字符,不管如何,该字符和所有子节点储存的字母都会比较一次
设当前节点为U,那么 ans += trie【U】.sum
(4)如果子节点中有和当前插入字符匹配的,设有匹配的那个字符的节点为j,那么聪明的你肯定知道为什么要
ans += trie【j】.sum 了,因为这代表对每个在strcmp函数进行if那个句子的比较的数量