Uva 129 Krypton Factor
0.这道题的输出 处理起来挺麻烦的
以后类似的可以借鉴一下
;i<cur;i++) { && i%==) printf("\n%c",a[i]); && i%==) printf(" %c",a[i]); else printf("%c",a[i]); }
1.还有一个是输出 第n小 怎么来控制第n小 利用的是一个初始化为0的cnt 每当满足所有条件 进入递归边界的时候 判断一下cnt是否等于n 然后cnt++
初始化为0的原因是 第一次在主函数中调用的时候 执行判断语句 cnt++ == n的时候 cnt就更新为1了,所以是初始化为0而不是1.
2.是判断是否是简单的串的方法
这是一个由前L个字符组成的字符串,所以有一个i<l的for循环和 a[cur]='A'+i;的语句
int ok为1 表示困难串,因为 判断完之后是困难串,才进入递归dfs
之后,我们是判断后缀是否相同,而不是整个字符串拿来判断,那样会做很多重复的工作导致效率下降。
初始化isequal=1,然后开始判断,一旦发现不等的,就isequal=0然后break
在循环外面 判断 if(isequanl==1) 如果是1 则是简单串 则ok=0;
如果ok==1 则进入递归 就是这样一个逻辑
;i<l;i++) { a[cur]='A'+i; ; ;j*<=cur+;j++) { ; ;k<j;k++) if(a[cur-k]!=a[cur-j-k]) {isequal=;break;} ) { //如果是简单串 则ok=0; ok=;break; } } && getans==); }
3. 得到答案之后记得更新getans 为true 终止剩下的dfs 不然会一直输出
或者 dfs加入返回值,递归搜索过程中如果有一个成功,就直接退出!!! 使用int型的dfs 找到答案后return 0 其余dfs均return 1
)) ;
#include <cstdio> int n,l,cnt; ]; bool getans; void dfs(int cur) { if(cnt++ == n) { getans=true; ;i<cur;i++) { && i%==) printf("\n%c",a[i]); && i%==) printf(" %c",a[i]); else printf("%c",a[i]); } printf("\n"); printf("%d\n",cur); } ;i<l;i++) { a[cur]='A'+i; ;//ok=1表示困难的串 ;j*<=cur+;j++) { ; ;k<j;k++) if(a[cur-k]!=a[cur-j-k]) {isequal=;break;} ) { //如果是简单串 则ok=0; ok=;break; } } && getans==); } } int main() { while(scanf("%d%d",&n,&l)!=EOF) { && l==) break; getans=false; cnt=; dfs(); } ; }
Uva 129 Krypton Factor的更多相关文章
- UVA.129 Krypton Factor (搜索+暴力)
UVA.129 Krypton Factor (搜索+暴力) 题意分析 搜索的策略是:优先找长串,若长串不合法,则回溯,继续找到合法串,直到找到所求合法串的编号,输出即可. 注意的地方就是合法串的判断 ...
- UVa 129 Krypton Factor【回溯】
学习的紫书的回溯,理解起来还是好困难的说啊= = #include<iostream> #include<cstdio> #include<cstring> #in ...
- UVa 129 Krypton Factor困难的串 (dfs 递归搜索)
回溯法,只需要判断当前串的后缀,而不是所有的子串 #include<iostream> #include<cstdio> using namespace std; ]; int ...
- UVA - 129 Krypton Factor (困难的串)(回溯法)
题意:求由字母表前L个字母组成的字典序第n小的困难串.(如果一个字符串包含两个相邻的重复子串,则称它是"容易的串",其他串称为"困难的串".) 分析:回溯时,检 ...
- UVa 129 Krypton Factor (DFS && 回溯)
题意 : 如果一个字符串包含两个相邻的重复子串,则称它是“容易的串”,其他串称为“困难的 串”.例如,BB.ABCDACABCAB.ABCDABCD都是容易的串,而D.DC.ABDAB. CBABCB ...
- uva 129 krypton factors ——yhx
Krypton Factor You have been employed by the organisers of a Super Krypton Factor Contest in which ...
- 129 - Krypton Factor
/*UVa129 - Krypton Factor --回溯问题.看例子可知道确定该字符串是按照从左到右依次考虑每个位置,当前位置填不上所有的字符时,需要回溯. -- */ #define _CRT_ ...
- UVA 129_ Krypton Factor
题意: 一个字符串含有两个相邻的重复的子串,则称这个串为容易的串,其他为困难的串,对于给定n,l,求出由前l个字符组成的字典序第n小的困难的串. 分析: 按字典序在字符串末尾增加新的字符,并从当前字符 ...
- UVA129 Krypton Factor 困难的串 dfs回溯【DFS】
Krypton Factor Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
随机推荐
- 自定义tld标签,页面使用
背景需求: 系统本身的session不能在页面使用 如下: controller: @RequestMapping(method=RequestMethod.GET) public String ge ...
- 【vs2010调试】当前不会命中断点 源代码与原始版本不同
解决方案:全选CPP文件内容,选择 “编辑”-“高级”-“设置选定内容的格式”,保存,重新编译.
- c++中有些重载运算符为什么要返回引用
事实上,我们的重载运算符返回void.返回对象本身.返回对象引用都是可以的,并不是说一定要返回一个引用,只不过在不同的情况下需要不同的返回值. 那么什么情况下要返回对象的引用呢? 原因有两个: 允许进 ...
- Myeclipse for Mac快捷键
myeclipse for mac 的快捷键汇总 快键键 作用 备注 Command+1 快速修复(自动导包等) 比如与Syso配合,与main配合可快速构造方法签名 Alt+/ 自动补全 Comma ...
- Linux下C语言多线程,网络通信简单聊天程序
http://www.cnblogs.com/zhuxianji/archive/2011/01/06/1928970.html
- [转]DB2时间类函数
Src URL:http://www.cnblogs.com/wanghonghu/archive/2012/05/25/2518604.html 1.db2可以通过SYSIBM.SYSDUMMY1. ...
- Tomcat在Linux上的安装与配置
以下使用的Linux版本为: Redhat Enterprise Linux 6.5 x86_64,Tomcat版本为tomcat-7.0.54. 1.下载JDK与Tomcat. jdk下载地址 ...
- 动手动脑之小程序:TryAndCatch
源代码 import java.util.InputMismatchException;import java.util.Scanner;public class TryAndCatch {publi ...
- 与你相遇好幸运,Sails.js自定义数据库名
在/api/models/下,自定义的.js文件内容 module.exports = { tableName: '自定义的数据库名', autoCreatedAt: false, //关闭 au ...
- 【转载】 Python动态生成变量
用Python循环创建多个变量, 如创建 a1= .a2= .a3= .a4= .a5= 或 self.a1= .self.a2= . self.a3= 一. 可以通 ...