前缀搜索 Trie 强在哪
第 1 步:apple、app、apply、banana 第 2 步:第 1 步:走到 a 第 3 步:第 2 步:走到 p 第 4 步:第 3 步:再走到 p 第 5 步:app 下面挂着的都是答案 第 6 步:走几步只看前缀多长 · a
有序数组二分能做前缀吗
把词库排好序再二分,做前缀搜索【0】。
以 app 开头的有几个
词库是 apple、app、apply、banana。运行下面这段程序: #include <iostream> #include <string> #include <vector> using nam
app 自己算不算一个词
同一个词库。运行下面这段程序: #include <iostream> #include <string> #include <vector> using namespace std; #include
数出以前缀开头的词
补全 count_prefix:先走到前缀那个节点,再收集下面所有的词,返回个数。这次数 app 开头的。 (本题用 g++ -std=c++17 -O0 编译。)
做一个自动补全
补全 suggest:返回所有以 pre 开头的词,按字典序排好。补全 app,把结果用 / 拼起来输出。 (本题用 g++ -std=c++17 -O0 编译。)
前缀有和没有一起验
同一个 suggest。把两个结果的个数拼起来输出:补全 app(有三个)和补全 cat(一个都没有),中间用 / 隔开。 (本题用 g++ -std=c++17 -O0 编译。)
词库大了之后差多少
Trie 查前缀的步数只和前缀长度有关;扫全表的步数和词库大小有关。补全两个函数,算一个一百万词的词库上查 app 各要几步,用 / 拼起来输出。 (本题用 g++ -std=c++17 -O0 编译。)
选搜索算法先看什么
第 1 步:上:线性;下:二分 第 2 步:第 1 次比较 第 3 步:第 2 次比较 第 4 步:第 3 次比较 第 5 步:第 4 次比较 第 6 步:第 5 次比较 第 7 步:二分 3 次,线性 5 次 13 15 17 23 24
无序数组只查一次(C++)
一个没排序的数组,只需要查一次,最合适的是【0】。