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 ...
随机推荐
- EF查询视图只得到一条记录
1.出错结果:数据库表视图有多条数据,在使用EF框架进行查询时却只得到一条数据(注:拦截EF得到的sql语句在数据库进行查询并没有任务问题). 2.出错原因:该视图中没有ID或者主键,EF查询时进行反 ...
- 【leetcode】Convert Sorted Array to Binary Search Tree (easy)
Given an array where elements are sorted in ascending order, convert it to a height balanced BST. 有序 ...
- java实现批量上传(swfupload)
下载 swfupload 文件夹 里面包含handlers.js,swfupload.js,swfupload.swf 三个文件. 我的是和ssh项目整合在一起的.因为struts2的拦截器会拦截所有 ...
- iOS 本人必装插件
本人觉得比较好用也实用的Xcode插件记录: 1. Alcatraz 插件通过它来管理 : https://github.com/alcatraz/Alcatraz.git 2. Cocoa ...
- ios waxpatch lua语法
Wax Lua 使用方法 说一下 Wax 的特点,它支持你在脚本里使用任何 OC 的类,同样也支持你创建一个类. 使用一个类时你会这样使用: 1 2 NSString -- Returns the N ...
- 解决window删除文件时提示: 源文件名长度大于系统支持的长度
import java.io.File; /** */ public class DeleteFiles { public static void deleteFiles( File file ){ ...
- Android Service 与 IntentService
Service 中的耗时操作必须 在 Thread中进行: IntentService 则直接在 onHandleIntent()方法中进行
- 《图形学》实验四:中点Bresenham算法画直线
开发环境: VC++6.0,OpenGL 实验内容: 使用中点Bresenham算法画直线. 实验结果: 代码: //中点Bresenham算法生成直线 #include <gl/glut.h& ...
- 二叉搜索树的实现及指针问题的一点思考(C++)
今天实现二叉搜索树的时候因为指针的问题卡了一上午(实在不应该...),一直segmentation fault,个人感觉还是需要记录一下的. 首先贴一下做的题的意思: 输入一系列整数,建立二叉排序数, ...
- [JAVA] IOException: Invalid byte 2 of 2-byte UTF-8 sequence(解决办法)
日志打印不全,后台只打印出出标题的异常信息: 先前的日志打印信息:log.debug(e.getMessage()); 后面改成了日志打印信息:log.debug(e); log.debug(e.ge ...