题目链接:https://vjudge.net/problem/UVA-129

题解:

这道题卡了一会儿的时间,一开始最大的问题是如何判断添加了一个字符之后,该字符串是不是一个困难的串,解决办法是:利用两个循环分别取相邻的子串,在第二重循环里,如果有一对字符不满足重合,则它必定不是重复的串,如果第一重循环全部满足的话,这个字符放进去必定是困难的串,这就是第一个问题的解决办法。

除了上面的困难之外,还有两个要注意的地方,第一个就是:这个递归函数,一定要加及时的终止条件,找到第一组满足条件的就不用找了。第二个就是:输出小麻烦,一定要小心。

代码如下:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#define MAXN 100
using namespace std;
typedef long long ll;
char ans[MAXN];
int sumtimes;
int n,L;
int findnThSeq(int cur){
if(sumtimes++ == n){
sumtimes--;
int kase = ;
for(int i = ;i<cur;i++){
kase++;
printf("%c",ans[i]);
if(kase % == && kase != && kase != cur) printf(" ");
if(kase == && cur != )printf("\n");
}
printf("\n%d\n",cur);
return ;
}
else{
for(int i = ;i<L;i++){
int ok = ;
ans[cur] = 'A' + i;
for(int j = ;j* <= cur+;j++){
int rignt = ;
for(int k = ;k<j;k++){
if(ans[cur - k] != ans[cur-k-j]){
rignt = ;
break;
}
}
if(rignt == ){
ok = ;
break;
}
}
if(ok){
if(!findnThSeq(cur+)) return ;
}
}
}
return ;
} int main(void){
while(scanf("%d%d",&n,&L) == && n && L){
sumtimes = ;
findnThSeq();
} return ;
}

回溯-uva129的更多相关文章

  1. 回溯(UVA129)

    POINT: 如何判断是否包含连续重复子串? 判断 当前串 的 后缀 啦~~~ You have been employed by the organisers of a Super Krypton ...

  2. UVA129 Krypton Factor 困难的串 dfs回溯【DFS】

     Krypton Factor Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  3. 7_5 困难的串(UVa129)<回溯法:避免无用判断>

    “超级氪因素大赛”(译注:英国的一档电视心智竞答节目)的主办方雇你来对付那些足智多谋的参赛选手.在比赛的一个环节中,节目主持人将念出一长串的字母来考验选手的记忆能力.因为许多选手都是分析字串模式的高手 ...

  4. N皇后问题—初级回溯

    N皇后问题,最基础的回溯问题之一,题意简单N*N的正方形格子上放置N个皇后,任意两个皇后不能出现在同一条直线或者斜线上,求不同N对应的解. 提要:N>13时,数量庞大,初级回溯只能保证在N< ...

  5. jQuery 2.0.3 源码分析 回溯魔法 end()和pushStack()

    了解了jQuery对DOM进行遍历背后的工作机制,可以在编写代码时有意识地避免一些不必要的重复操作,从而提升代码的性能 从这章开始慢慢插入jQuery内部一系列工具方法的实现 关于jQuery对象的包 ...

  6. linux中oops信息的调试及栈回溯【转】

    本文转载自:http://blog.csdn.net/kangear/article/details/8217329 ========================================= ...

  7. Java数据结构之回溯算法的递归应用迷宫的路径问题

    一.简介 回溯法的基本思想是:对一个包括有很多结点,每个结点有若干个搜索分支的问题,把原问题分解为对若干个子问题求解的算法.当搜索到某个结点.发现无法再继续搜索下去时,就让搜索过程回溯(即退回)到该结 ...

  8. 回溯 DFS 深度优先搜索[待更新]

      首先申明,本文根据微博博友 @JC向北 微博日志 整理得到,本文在这转载已经受作者授权!   1.概念   回溯算法 就是 如果这个节点不满足条件 (比如说已经被访问过了),就回到上一个节点尝试别 ...

  9. 46. Permutations 回溯算法

    https://leetcode.com/problems/permutations/ 求数列的所有排列组合.思路很清晰,将后面每一个元素依次同第一个元素交换,然后递归求接下来的(n-1)个元素的全排 ...

随机推荐

  1. 俄罗斯方块(JS+CSS)

    这是一个用 js + css 写的网页版俄罗斯方块. 具体代码与示例可访问我的另一个博客查看,源码与示例.

  2. Hadoop YARN简介

    背景 本文整理一些Hadoop YARN的相关内容. 简介 YARN(Yet Another Resource Negotiator)是Hadoop通用资源管理平台,为各类计算框架(离线MR.在线St ...

  3. 函数式编程编程即高阶函数+monad

    高阶函数负责数据的单次映射: monad负责数据处理流的串联,并使得串联函数具有相同的形式. 同时moand负责基础类型和高阶类型间的转换.

  4. Jenkins RCE(CVE-2018-1000861)

    先说通过IDEA利用JPDA远程调试tomcat程序 在catalina.sh添加,或者catalina.bat内容不动用如下命令开启,默认是开启8000端口 set JAVA_OPTS=-Xdebu ...

  5. greys java在线诊断工具

    greys是一个开源的github项目,用来分析运行中的java类.方法等信息. greys工具地址: https://github.com/oldmanpushcart/greys-anatomy/ ...

  6. day13,day14

    day13 迭代器 什么是迭代器? 迭代:是一个重复的过程,每一次重复,都是基于上一次的结果而进行的 器:迭代取值的工具 为何要用迭代器? 迭代器提供了一种通用的不依赖于索引的迭代取值方式 如何用迭代 ...

  7. Debian 鼠标左右手

    环境:debian testing;xfce4桌面 在debian中想把鼠标改为左手操作,在设置中调整鼠标的按钮为左撇子根本没用!网上搜索后发现事实很简单,简单到不知该怎么说. 废话少说,放码过来. ...

  8. 何谓BLDC电机?BLDC电机是如何旋转的?

    何谓BLDC电机?BLDC电机是如何旋转的?

  9. odoo权限

    ir.model.access.csv文件这里注意,用户和经理的写法 id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create, ...

  10. Docker的Mysql数据库:把数据存储在本地目录

    Docker mysql 把数据存储在本地目录,很简单,只需要映射本地目录到容器即可 1.加上-v参数 $ docker run -d -e MYSQL_ROOT_PASSWORD=admin --n ...