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 ...
随机推荐
- Luncence .Net 使用
public partial class Form1 : Form { public Form1() { InitializeComponent(); } //标准分词 private void bu ...
- September 21st 2016 Week 39th Wednesday
Don't try so hard, the best things come when you least expect them. 不要着急,最好的总会在最不经意的时候出现. Always tur ...
- Centos以rpm方式进行安装MySql
安装过很多次mysql了,却没好好总结过,每次安装完了都忘,下次还要重新Google,这次总结下,自己以后也有的查. 1.安装采用的的rpm包的方式,安装前要先看系统内是否安装了旧版本的MySql和m ...
- hdu1141(二进制数位,二分,打表)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1141 题意:××公司是制造computer的,1960年它造的computer是4bit的,之后每10 ...
- JAVA基础学习之final关键字、遍历集合、日期类对象的使用、Math类对象的使用、Runtime类对象的使用、时间对象Date(两个日期相减)(5)
1.final关键字和.net中的const关键字一样,是常量的修饰符,但是final还可以修饰类.方法.写法规范:常量所有字母都大写,多个单词中间用 "_"连接. 2.遍历集合A ...
- Bootstrap简介
接下来的一段时间,想研究一下现有的网页框架,第一个不容错过的就是Bootstrap,Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架.Bootstrap 是基于 HTML.CS ...
- 攻城狮在路上(叁)Linux(二十)--- Linux磁盘格式化
磁盘完成分区之后,进行格式化,生成文件系统. 命令格式: mkfs [-t 文件系统格式] 设备文件名 <== 使用 mkfs [Tab][Tab] 可以查看linux支持的文件系统格式 示例 ...
- angularjs 权威指南 版本 1.2.6
1 $rootScope run : run 方法初始化全局的数据 ,只对全局作用域起作用 如$rootScope <script src="http://apps.bdimg.c ...
- php计算几分钟前、几小时前等
function format_date($time){ $t=time()-$time; $f=array( '=>'年', '=>'个月', '=>'星期', '=>'天' ...
- myeclipse报错: java compiler level does not match the version of the installed java project facet
在升级到myeclipse 9.0正式版后,很无耐地出发现了一个error级别的错误,虽然没在代码中,但是看着让人很不舒服.第一反应就是到网上搜索解决之道,结果,网站说在工程的属性中去找个叫啥&quo ...