【算法学习笔记】15.暴力求解法04 回溯法02 困难的串

发现好久没来更新了,开学之后各种杂事,好久都没学习算法了,还好最近马上要学习计导里有关算法的部分了。明天还要预习一下,今天先暂时把上次写完的困难的串(“好久之前的事”)更新一下,再在十一假期中强烈补充算法知识。

困难的串仍然是回溯法的部分,既然是回溯法那么就要DFS然后及时返回。

题目:如果一个字符串包含两个相邻的重复子串,则称它是”容易的串“,其他串成为”困难的串“。例如”ABCDABCD“是容易的串,而”ABDAB“是困难的串。
输入正整数n和L,输出由前L个字符组成的,字典序第n小的困难的串。
样例输入:73
303
样例输出:ABACABA
ABACABCACBABCABACABCACBACABA

当然处理重复字串的内容,就要进行枚举字串的长度和起始位置。既然是重复字串,总字串长度一定是偶数,但是这种想法并没有利用到之前的串来进行后续判断。 要用回溯来看。

bool is_diff(int cur) { //判断后缀的话最长也就是和之前已经排完的长度一样cur+1表示已经排完的数的长度 for(int j=1; j+j<=cur+1; j++)//循环确定所要判断的子串长度 { //开始判断 int equal = 1; //此处必须用equal变量来记录 for(int k=0; k



【【算法学习笔记】15.暴力求解法04 回溯法02 困难的串】

    推荐阅读