第二步哈希版别忘确认
一段文本 abababcababcabababc(19 个字符,下标从 0 起)和一个模式 ababc。 把一段字符折成一个数:h = (h × 31 + 字母序号) % 17,a 记 1、b 记 2、c 记 3。 第二步:写哈希版,并且和
第三步 KMP 连表一起验
一段文本 abababcababcabababc(19 个字符,下标从 0 起)和一个模式 ababc。 第三步:KMP 已经写好了。输出 next 表里最大的那个值、KMP 找到的位置个数、以及它和暴力对不对得上(1 或 0)。 (本题用
第四步多模式也要对账
四个要找的词 he、she、his、hers,一段文本 ushershishe(11 个字符,下标从 0 起)。 第四步:Trie 一次扫过、和四个词各扫一遍,两条路的命中必须一样。输出两边各命中几处、以及是否一样(1 或 0)。 (本题用
交付五条验收一起过
一段文本 abababcababcabababc(19 个字符,下标从 0 起)和一个模式 ababc。 四个要找的词 he、she、his、hers,一段文本 ushershishe(11 个字符,下标从 0 起)。 最后一步:五条验收条
限时一秒的匹配靠什么过
文本有一百万个字、模式几千个字,还要在 1 秒内找完。真正能保证过的是【0】。
补全 next 数组
场景:实验机上 ~/work/str/kmp.cpp 用 KMP 找模式的全部出现位置,但 build_next 还是空的。 任务:补全 build_next。make 编译,./kmp < sample.txt 自测;check 会
一百万字的文本里找
场景:~/work/str/count.cpp 数模式在文本里出现几次,结果对,但文本一长(10^6)、模式一长(几千),就要跑十几秒。 任务:改写 count.cpp,让大数据在 1 秒内算完,输出格式不变。make 编译(-O2)后自测
写 Trie 数前缀
场景:~/work/str/trie.cpp 按指令往词典里放单词、问以某个前缀开头的单词有几个,add_word 和 count_prefix 还没写。 任务:补全这两个函数。make 编译后自测;check 会用随机指令序列对拍。 可操
修好子串哈希
场景:~/work/str/sub.cpp 用前缀哈希判断两段子串是否相同,可明明一样的两段它常说不同。 任务:修好 get(l, r) 的公式。make 编译后用 sample.txt 自测。 可操作范围:只在分给你的这台实验机上操作。可
让哈希判错一次
场景:~/work/str/eq.cpp 只拿哈希值判断两个串是否相同,模数只有几千。 任务:按 ~/题目.txt 的要求,找两个不同、长度都符合要求的小写字母串,让 eq 输出 same,写进 ~/work/str/answer.txt(