大概题意:
在一个给定的单词表中取出一些词,组成最长的词链,就是包含单词数最多的词链。将它的单词数统计出来
输入格式
这些文件的格式是,第一行为单词表中的单词数N(1<=N<=2000),下面每一行有一个单词,按字典顺序排列,中间没有重复的单词
输出格式
输出最长词链的单词数
思路:
既然要找单词的前缀,自然想到利用前缀树–Trie树来做,由于没有重复单词,在字典树中用DFS每找到一个单词,+1即可。
这里作者的代码采用了unordered_map和unorded_set来分别存储下一步存在的字母和到此为止的单词
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
#include<set>
#include<unordered_map>
#include<unordered_set>
#include<vector>
using namespace std;
struct trieNode{
unordered_set<char> isWord;
unordered_map<char, trieNode*