模式越长暴力涨多少

同一段文本(24 个 a),模式分别是 4、6、8 个 a。数一数暴力各比了多少次: #include <iostream> #include <string> #include <vector> usi

开始练习 →

同样三种情况 KMP 不动

同一段文本、同样是 4、6、8 个 a 的模式,这次数 KMP 的比较次数: #include <iostream> #include <string> #include <vector> using n

开始练习 →

把选型写成一个函数

三种场景:①一个模式、文本不断来;②几十个词、一段文本;③一个模式、只找一次。按顺序输出各自该用什么。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

平均差不多最坏差很多

两组对照:一组是普通文本 abababcababcabababc 配 ababc,一组是最坏情况(24 个 a 配 6 个 a)。四个数一起输出:普通暴力、普通 KMP、最坏暴力、最坏 KMP。 (本题用 g++ -std=c++17 -O

开始练习 →

需求没说清时该回答什么

把选型写成从需求描述里认关键词,认不出来就老实说先问清楚。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

预处理摊到十段文本上

模式固定是 ababc,文本一段接一段地来,每段都长 abababcababcabababc 那样。next 表只需要算一次。按 暴力1段 / 暴力10段 / KMP1段 / KMP10段 的顺序输出比较次数。 (本题用 g++ -std=

开始练习 →

交付匹配实现先验哪一样

第 1 步:三种写法各找一遍 第 2 步:暴力 找到三个位置 第 3 步:哈希 找到三个位置 第 4 步:KMP 找到三个位置 第 5 步:三行完全一样:对账通过 暴力 哈希 KMP 2 7 14 2 7 14 2 7 14 写完一个匹配算

开始练习 →

拿什么当验收条款

匹配的结果可能有好几个位置,代价又随算法变。验收该钉在【0】。

开始练习 →

少了确认那一步多出几个

一段文本 abababcababcabababc(19 个字符,下标从 0 起)和一个模式 ababc。 把一段字符折成一个数:h = (h × 31 + 字母序号) % 17,a 记 1、b 记 2、c 记 3。 左边是逐字符比出来的个数

开始练习 →

第一步先有一条基准线

一段文本 abababcababcabababc(19 个字符,下标从 0 起)和一个模式 ababc。 交付流程第一步:写一个慢但一定对的暴力版,后面所有算法都拿它对账。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →