自己写中心扩展
一个字符串 abcbdcba(8 个字符)。回文就是正着读和倒着读一样。 c 从 0 数到 2n-2,偶数的 c 落在字符上,奇数的 c 落在缝里。补全往外扩的那两步。 (本题用 g++ -std=c++17 -O0 编译。)
只试字符位会丢偶数回文
拿 abccba 做对照:它整个就是回文,长度是偶数。把只试字符位的那一版写出来,和正确版一起输出。 (本题用 g++ -std=c++17 -O0 编译。)
两种做法代价不同
一个字符串 abcbdcba(8 个字符)。回文就是正着读和倒着读一样。 暴力枚举所有子串、和中心扩展,两种做法各试了多少次?结果对得上吗? (本题用 g++ -std=c++17 -O0 编译。)
把子串和子序列一起交出来
一个字符串 abcbdcba(8 个字符)。回文就是正着读和倒着读一样。 两个函数都写好了:一个求最长回文子串(中心扩展),一个求最长回文子序列(区间 DP)。把两个长度一起输出。 (本题用 g++ -std=c++17 -O0 编译。)
一个模式反复找选哪个
模式固定不变,文本一段接一段地来。最划算的是【0】。
一次找几十个词选哪个
第 1 步:24 个 a,模式换三种长度 第 2 步:模式长 4 第 3 步:模式长 6 第 4 步:模式长 8 第 5 步:下面一行一动不动 m=4 m=6 m=8 暴力 KMP 84 24 114 24 136 24 一段文本,要同时找
模式越长暴力涨多少
同一段文本(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