Krypton Factor
Krypton Factor
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 181 Accepted Submission(s): 60
have been employed by the organisers of a Super Krypton Factor Contest
in which contestants have very high mental and physical abilities. In
one section of the contest the contestants are tested on their ability
to recall a sequenace of characters which has been read to them by the
Quiz Master. Many of the contestants are very good at recognising
patterns. Therefore, in order to add some difficulty to this test, the
organisers have decided that sequences containing certain types of
repeated subsequences should not be used. However, they do not wish to
remove all subsequences that are repeated, since in that case no single
character could be repeated. This in itself would make the problem too
easy for the contestants. Instead it is decided to eliminate all
sequences containing an occurrence of two adjoining identical
subsequences. Sequences containing such an occurrence will be called
``easy''. Other sequences will be called ``hard''.
For example,
the sequence ABACBCBAD is easy, since it contains an adjoining
repetition of the subsequence CB. Other examples of easy sequences are:
BB
ABCDACABCAB
ABCDABCD
Some examples of hard sequences are:
D
DC
ABDAB
CBABCBA
order to provide the Quiz Master with a potentially unlimited source of
questions you are asked to write a program that will read input lines
that contain integers n and L (in that order), where n > 0 and L is
in the range , and for each input line prints out the nth hard sequence
(composed of letters drawn from the first L letters in the alphabet),
in increasing alphabetical order (alphabetical ordering here corresponds
to the normal ordering encountered in a dictionary), followed (on the
next line) by the length of that sequence. The first sequence in this
ordering is A. You may assume that for given n and L there do exist at
least n hard sequences.
For example, with L = 3, the first 7 hard sequences are:
A
AB
ABA
ABAC
ABACA
ABACAB
ABACABA
As
each sequence is potentially very long, split it into groups of four
(4) characters separated by a space. If there are more than 16 such
groups, please start a new line for the 17th group.
Therefore, if the integers 7 and 3 appear on an input line, the output lines produced should be
ABAC ABA
7
Input is terminated by a line containing two zeroes. Your program may assume a maximum sequence length of 80.
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <string>
#include <vector>
#include <set>
#include <map>
#include <stack>
#include <queue>
using namespace std;
const int INF=0x7fffffff;
const double EXP=1E-;
const int MS=;
int a[MS];
int cnt,l,n; int dfs(int cur)
{
if(cnt++==n)
{
for(int i=;i<cur;i++)
{
if(i&&(i%)==) //第k*64+1个的话,需要换行
printf("\n");
else if(i&&i%==) //第k*4+1个的话,需要空格
printf(" ");
printf("%c",a[i]+'A');
}
printf("\n%d\n",cur);
return ; //为了得到了答案立即退出方便
}
else
{
for(int i=;i<l;i++)
{
a[cur]=i;
int ok=;
for(int j=;j*<=cur+;j++)
{
int is=;
for(int k=;k<j;k++)
if(a[cur-k]!=a[cur-j-k])
{
is=;
break;
}
if(is)
{
ok=;
break;
}
}
if(ok)
{
if(!dfs(cur+))
return ;
}
}
}
return ;
} int main()
{
while(cin>>n>>l&&(n+l))
{
cnt=;
dfs();
}
}
Krypton Factor的更多相关文章
- UVA.129 Krypton Factor (搜索+暴力)
UVA.129 Krypton Factor (搜索+暴力) 题意分析 搜索的策略是:优先找长串,若长串不合法,则回溯,继续找到合法串,直到找到所求合法串的编号,输出即可. 注意的地方就是合法串的判断 ...
- 129 - Krypton Factor
/*UVa129 - Krypton Factor --回溯问题.看例子可知道确定该字符串是按照从左到右依次考虑每个位置,当前位置填不上所有的字符时,需要回溯. -- */ #define _CRT_ ...
- UVA129 Krypton Factor 困难的串 dfs回溯【DFS】
Krypton Factor Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- Uva 129 Krypton Factor
0.这道题的输出 处理起来挺麻烦的 以后类似的可以借鉴一下 ;i<cur;i++) { && i%==) printf("\n%c",a[i]); & ...
- UVa 129 Krypton Factor【回溯】
学习的紫书的回溯,理解起来还是好困难的说啊= = #include<iostream> #include<cstdio> #include<cstring> #in ...
- uva129 - Krypton Factor 7.4.3 困难的串
7.4.3困难的串 学习点:dfs加入返回值,递归搜索过程中如果有一个成功,就直接退出 //7.4.3 困难的串 #include<cstdio> #include<cstrin ...
- UVa 129 (回溯法) Krypton Factor
回溯法确实不是很好理解掌握的,学习紫书的代码细细体会. #include <cstdio> ]; int n, L, cnt; int dfs(int cur) { if(cnt++ == ...
- Krypton Factor 困难的串-Uva 129(回溯)
原题:https://uva.onlinejudge.org/external/1/129.pdf 按照字典顺序生成第n个“困难的串” “困难的串”指的是形如ABAB, ABCABC, CDFGZEF ...
- UVa 129 Krypton Factor困难的串 (dfs 递归搜索)
回溯法,只需要判断当前串的后缀,而不是所有的子串 #include<iostream> #include<cstdio> using namespace std; ]; int ...
随机推荐
- 利用Javascript获取当前日期的农历日期
来源:http://www.ido321.com/926.html JavaScript代码 1: /*设置农历日期*/ 2: var CalendarData=new Array(100); 3: ...
- quick-x在windows平台打包加密文件
D:\quick-cocos2d-x-2.2.1-rc\bin>compile_scripts -i ..\mygames\myth\scripts -o ..\mygames\myth\res ...
- HDU-4727 The Number Off of FFF 水题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4727 水题.. //STATUS:C++_AC_187MS_288KB #include <fu ...
- #maven系列(4)-maven插件的介绍
1. 简介 在Maven设计中,实际的任务都是交由插件完成的,这种思想和设计模式中的模板方法非常类似,模板方法模式在父类中定义算法的整体结构,子类可以通过实现或者重写父类的方法来控制实际的行为,这样既 ...
- LINUX消息队列实战之一
前言 能说能抄能论皆不算,能写能打才是真功夫. 唠叨 反正我也是一个孤独的程序猿,多说一些奇奇怪怪的唠叨也无妨,第一次写消息队列,书本的东西和实战很不同,根据实战总结的一些注意事项会和大家分享,也敲打 ...
- SQLite数据库连接方式
http://blog.csdn.net/ZF101201/archive/2010/05/26/5626365.aspx SQLite.NET Type: .NET Framework Cla ...
- 几道 SQL 语句面试题
--S (sno,sname)学生关系,sno为学号 sname为姓名 --C(cno,cname,Cteacher)课程关系 cno为课程号,cname为课程名,cteacher 为任课教师 --S ...
- jQuery UI vs EasyUI
几个UI框架的比较k: 目前工作中可能会常用到几个UI框架,如 Ext: http://docs.sencha.com/ext-js/4-1/#!/example 感觉其过于复杂,性能不高,所以一直没 ...
- pygame “音乐盒”---- 播放一首歌& 点击对话框后背景以及对话框大小改变
有时,你用pygame写的游戏也许需要播放一些背景音乐,该怎么做呢,直接上代码: 下面的代码,有关于: 1>设置对话框图标.大小.标题 2>播放音乐 3>设置背景图片,以及获取背景图 ...
- Volley使用指南第三回(来自developer.android)
继第二篇之后,再来Volley使用的教程的第三篇,有些翻译我是根据自己的理解,可能有错误的地方,还请多多包涵. 标准请求 这一回课将会告诉你Volley能够完成的3种请求类型 1.StringReqe ...