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
 
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <cmath>
  5. #include <algorithm>
  6. #include <string>
  7. #include <vector>
  8. #include <set>
  9. #include <map>
  10. #include <stack>
  11. #include <queue>
  12. using namespace std;
  13. const int INF=0x7fffffff;
  14. const double EXP=1E-;
  15. const int MS=;
  16. int a[MS];
  17. int cnt,l,n;
  18.  
  19. int dfs(int cur)
  20. {
  21. if(cnt++==n)
  22. {
  23. for(int i=;i<cur;i++)
  24. {
  25. if(i&&(i%)==) //第k*64+1个的话,需要换行
  26. printf("\n");
  27. else if(i&&i%==) //第k*4+1个的话,需要空格
  28. printf(" ");
  29. printf("%c",a[i]+'A');
  30. }
  31. printf("\n%d\n",cur);
  32. return ; //为了得到了答案立即退出方便
  33. }
  34. else
  35. {
  36. for(int i=;i<l;i++)
  37. {
  38. a[cur]=i;
  39. int ok=;
  40. for(int j=;j*<=cur+;j++)
  41. {
  42. int is=;
  43. for(int k=;k<j;k++)
  44. if(a[cur-k]!=a[cur-j-k])
  45. {
  46. is=;
  47. break;
  48. }
  49. if(is)
  50. {
  51. ok=;
  52. break;
  53. }
  54. }
  55. if(ok)
  56. {
  57. if(!dfs(cur+))
  58. return ;
  59. }
  60. }
  61. }
  62. return ;
  63. }
  64.  
  65. int main()
  66. {
  67. while(cin>>n>>l&&(n+l))
  68. {
  69. cnt=;
  70. dfs();
  71. }
  72. }

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. python学习之dict的items(),values(),keys()

    Python的字典的items(), keys(), values()都返回一个list >>> dict = { 1 : 2, 'a' : 'b', 'hello' : 'worl ...

  2. ffmpeg 研究

    ffmpeg -codecs | grep mp3 可以查看ffmpeg是否把mp3编解码模块编译进去了. libmp3lame is the mp3 encoder for ffmpeg. It n ...

  3. homework-06-C++11

    http://blog.csdn.net/lancelet/article/details/7220558 http://www.csdn.net/article/2012-05-15/2805585 ...

  4. overflow,white-space,text-overflow组合技,省略号!

    这是一个很简单的组合技,灵活应用省略号.

  5. 【转】Objective-C代码注释和文档输出的工具和方法

    http://blog.xcodev.com/blog/2013/11/01/code-comment-and-doc-gen-tools-for-objc/ 代码注释可以让代码更容易接受和使用,特别 ...

  6. codeforces300A Array

    A. Array time limit per test 2 seconds memory limit per test 256 megabytes input standard input outp ...

  7. 在 Web 层应用程序中使用Spring

    前面已经配置成功后,就可以在Web 层的Servlet或Jsp中调用访问Spring了,如果你 编制的是一个Servlet/Jsp 程序,那么在你的Servlet/Jsp 使用下面的代码通过Sprin ...

  8. STM32实验非正式报告之DMA

    前言 DMA即直接内存存取.我理解它就是一个“交通部长”抑或是一个“搬运工”,协助CPU存储或读取数据.既然它的主要工作就是“搬运”数据,服务对象自然就是内存(不太严格的说法吧,STM32中Flash ...

  9. Erp:原料投入产出报表

    USE [ChangHongWMS612]GO /****** Object: StoredProcedure [dbo].[st_WMS_RptMaterialInOutDaily] Script ...

  10. vim 打开多个文件

    一.如果在终端还没有打开vim 1.vim横向分屏打开多个文件 vim -o 文件1 文件2 2.vim纵向分屏打开多个文件 vim -O 文件1 文件2 二.如果在终端已经打开vim 1.横向分屏打 ...