Krypton Factor

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 181    Accepted Submission(s): 60

Problem Description
You
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

 
Input
In
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.

 
Sample Input
30 3
0 0
 
Sample Output
ABAC ABCA CBAB CABA CABC ACBA CABA
28
 
 #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的更多相关文章

  1. UVA.129 Krypton Factor (搜索+暴力)

    UVA.129 Krypton Factor (搜索+暴力) 题意分析 搜索的策略是:优先找长串,若长串不合法,则回溯,继续找到合法串,直到找到所求合法串的编号,输出即可. 注意的地方就是合法串的判断 ...

  2. 129 - Krypton Factor

    /*UVa129 - Krypton Factor --回溯问题.看例子可知道确定该字符串是按照从左到右依次考虑每个位置,当前位置填不上所有的字符时,需要回溯. -- */ #define _CRT_ ...

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

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

  4. Uva 129 Krypton Factor

    0.这道题的输出 处理起来挺麻烦的 以后类似的可以借鉴一下 ;i<cur;i++) { && i%==) printf("\n%c",a[i]); & ...

  5. UVa 129 Krypton Factor【回溯】

    学习的紫书的回溯,理解起来还是好困难的说啊= = #include<iostream> #include<cstdio> #include<cstring> #in ...

  6. uva129 - Krypton Factor 7.4.3 困难的串

      7.4.3困难的串 学习点:dfs加入返回值,递归搜索过程中如果有一个成功,就直接退出 //7.4.3 困难的串 #include<cstdio> #include<cstrin ...

  7. UVa 129 (回溯法) Krypton Factor

    回溯法确实不是很好理解掌握的,学习紫书的代码细细体会. #include <cstdio> ]; int n, L, cnt; int dfs(int cur) { if(cnt++ == ...

  8. Krypton Factor 困难的串-Uva 129(回溯)

    原题:https://uva.onlinejudge.org/external/1/129.pdf 按照字典顺序生成第n个“困难的串” “困难的串”指的是形如ABAB, ABCABC, CDFGZEF ...

  9. UVa 129 Krypton Factor困难的串 (dfs 递归搜索)

    回溯法,只需要判断当前串的后缀,而不是所有的子串 #include<iostream> #include<cstdio> using namespace std; ]; int ...

随机推荐

  1. 杂谈:HTML 5页面可视性API

    译文来源:http://www.ido321.com/1126.html 原文:HTML5 Page Visibility API 译文:HTML 5的页面可视性API 译者:dwqs 在早期,浏览器 ...

  2. c++ 概念及学习/c++ concept&learning(三)

    这一篇继续说说程序设计中的基本语句:控制块 一 if类控制语句 if if else if  , else if ,else if(条件语句){如果条件为真,要做的一些事情}  if(条件语句) {如 ...

  3. HDU-4742 Pinball Game 3D 三维LIS

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4742 题意:求3维的LIS.. 用分治算法搞得,参考了cxlove的题解.. 首先按照x排序,然后每个 ...

  4. Uploadify 3.2使用

    我今天介绍的Uploadify 3.2的,以前旧版本的并不适用,说到这个,我就火大,我也是第一次使用,也百度了下使用手册,结果坑爹的那些手册都是旧版的,新版的Uploadify接口和旧版的差太多了.废 ...

  5. 第二百六十五天 how can I 坚持

    每天上班闲着没事干好蛋疼啊.周报都不知道怎么写了. 今天加上了毕梦琪,哎,不知咋聊.好烦. 要搞angelarjs了,希望有机会,多搞点东西,要当架构师,哈哈. 量子计算,什么高深的东西,百度百科了下 ...

  6. javascript中document对象的属性和方法

    document.documentElement; document.firstChild;document.childNodes[0];// 取得对<html>的引用document.b ...

  7. 2015年必火的五个Html5移动开发工具推荐

    NO.1   DCloudHBuilder:基于HTML5开发工具 中文官网:http://www.dcloud.io/ DCloudHBuilder:基于HTML5开发工具是当前最快的HTML开发工 ...

  8. C#中托管与非托管

    在.net 编程环境中,系统的资源分为托管资源和非托管资源. 对于托管的资源的回收工作,是不需要人工干预回收的,而且你也无法干预他们的回收,所能够做的 只是了解.net CLR如何做这些操作.也就是说 ...

  9. 图片攻击-BMP图片中注入恶意JS代码 <转载>

    昨天看到一篇文章<hacking throung images>,里面介绍了如何在BMP格式的图片里注入JS代码,使得BMP图片既可以正常显示, 也可以运行其中的JS代码,觉得相当有趣. ...

  10. MX记录查询

    nslookup set type=mx