L 题意:给定两个字符串s,t,要求从s串中找出一个子串s'使得s'与t的公共最大子串的长度小于2,
思路: 其实题目的意思就是从s中选出的子串s'中不能存在同t任意字串相同的子串,我们考虑这样一种情况,当si可以接在s'的末尾的时候s',它有两种情况1.它根本不在t中出现,2.它在t中的顺序s'的末尾字符的前面,即,它不能够接的字符的集合是要严格包含且大于s'末尾的字符。这时就有聪明的小朋友要问了,如果s'的末尾字符是第1种情况,该怎么办呢?我们先不考虑这个问题,先考虑如果si为第一种情况该怎么办,答案是将上一个的所有状态加1,因此,我们相当于忽略了这个字符,在dp过程中也就不存在这种情况了。(严格意义上来说,循环时是会循环到这种状态的,但是由于这种状态永远是比其他状态小的(都加1等于都不加1笑),也就是被忽略了)
dpi,j 前i个以字符j+'a'结尾的最长合法子串长度
#include
#include
#include
#include
#include