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. Windows10输入法的切换

    Alt+Shift            中⇒あ,あ⇒中 Shift                  中⇒英,英⇒中 Alt+Caps Lock    あ⇒カ,A⇒あ⇒カ Ctrl+Caps Loc ...

  2. 视频资源下载方法[download video resources]

    笔者做视频时钟分析,需要用到大量特殊的视频,如何获取需要的视频是一个问题? 以下载NBA视频为例: Tools:①腾讯视频软件 (自行下载)  ②批处理文件(下文会给出代码) convert.bat ...

  3. Spark的应用程序

    Spark的应用程序,分为两部分:Spark driver 和 Spark executor.

  4. work_1

    Github的用户名为heiheitian 教科书:代码大全第2版 重构 一维最大子数组之和: #include<stdio.h>void MaxSumSonArrays(int a[], ...

  5. (转)UML实践----用例图、类图、对象图、顺序图、协作图、状态图、活动图、组件图、配置图

    面向对象的问题的处理的关键是建模问题.建模可以把在复杂世界的许多重要的细节给抽象出.许多建模工具封装了UML(也就是Unified Modeling Language™),这篇课程的目的是展示出UML ...

  6. POJ 3041 Asteroids (二分图最小点覆盖)

    题目链接:http://poj.org/problem?id=3041 在一个n*n的地图中,有m和障碍物,你每一次可以消除一行或者一列的障碍物,问你最少消除几次可以将障碍物全部清除. 用二分图将行( ...

  7. Java NIO原理和使用(转载一)

    Java NIO非堵塞应用通常适用用在I/O读写等方面,我们知道,系统运行的性能瓶颈通常在I/O读写,包括对端口和文件的操作上,过去,在打开一个I/O通道后,read()将一直等待在端口一边读取字节内 ...

  8. iOS开发代码规范

    1.关于命名 1.1统一要求 含义清楚, 尽量做到不需要注释也能了解其作用,若做不到,就加注释 使用全称不使用缩写 1.2类的命名 大驼峰式命名:每一个单词的首字母都采用大写字母例子: MFHomeP ...

  9. presentedViewController 和 presentingViewController 以及 dismissViewControllerAnimated 的使用

    在日常的开发中,多控制器之间的跳转除了使用push的方式,还可以使用 present的方式,present控制器时,就避免不了使用 presentedViewController.presenting ...

  10. http请求中乱码------编码的转换

    在http请求中如果包含了汉字,那么就会出现乱码,引文默认的编码是ISO的,为了正常的显示,需要将编码转化为UTF或者gbk,下面提供一个辅助类. import java.io.Unsupported ...