【129】Uva氪因子(困难的串)

  
  

你一直受雇于一个超级氪的组织者因素比赛中参赛者
有很高的精神和身体的能力。在一节比赛的参赛者在
测试他们的回忆能力已读取的字符sequenace测验他们的主人。许多
的选手非常善于识别模式。因此,为了增加一些困难
这个测试,组织者决定序列包含特定类型的重复子序列
不应使用。然而,他们不希望删除所有重复的子序列,因为在
这种情况下没有一个角色可以被重复。这本身会使这个问题太简单了
参赛者。相反,它是决定消除所有序列包含一个发生的两个相邻
相同的子序列。序列包含这样一个事件将被称为“容易”。其他序列
将被称为“硬”。例如,
ABACBCBAD序列是很容易的,因为它包含一个毗邻
子序列CB的重复。其他的例子简单的序列是:
?BB
?ABCDACABCAB
?ABCDABCD
硬序列的例子有:
?D
?直流
?ABDAB
?CBABCBA
为了提供测试主与一个潜在的无限来源的问题你问
编写一个程序,将从标准输入读取输入行,并写入到标准输出。输入

每个输入行包含整数n和L(依次),其中n比;L 0 L是在1≤≤26。
输入终止一行包含两个0。

输出为每个输入行打印出第n个硬序列(由字母来自第一个L
的字母),增加字母顺序(按字母顺序排序对应正常
排序中遇到一个字典),(下一行),序列的长度。
第一序列在这个顺序是“A”。你可能会认为对于给定n和L至少存在有n
硬序列。
这样一个序列可能是很长,把它分为四组(4)字符
一个空格隔开。如果有超过16这样的团体,请为17组开始一个新行。
程序可能承担的最大序列长度为80。
为例,用L=3,第一个7硬盘序列是:

AB
ABA
ABAC
马尼拉麻
ABACAB
ABACABA
示例输入7
3
30 3
0 0

示例输出ABAC ABA
7
ABAC ABCA CBAB卡巴课程ACBA卡巴

28日      

大致的题意:就是你要输入一个n和L,分别代表前L个字母输出第n个小的困难的串,而困难的串就是其中没有连续重复的字符串

  

利用的方法就是回溯法

  
 <代码> # include<比特/stdc + + .h>
  使用名称空间性病;
  int[100],问;
  整数n, L;
  
  int dfs (int cur) {//输出当前的序列//判断的条件是问为n也就是第n个小的序列
  如果(cnt + +==n) {//坏蛋是当前坐标长度
  (int i=0; i<,坏蛋,我+ +){//注意格式
  printf (" % c, A + S[我]);
  如果我% 64==63,,我!=cur-1) printf (" \ n ");
  else if(我% 4==3,,我!=cur-1) printf (" ");
  
  }//输出长度
  printf (" \ n % d \ n ", cur);
  返回0;
  }//接下来的内容就是判断当前字符串是不努力是序列
  for (int i=0; i祝辞n>的在L,,(n !=0,,L !=0)) {
  问=0;
  dfs (0);
  }
  返回0;
  }
   之前

【129】Uva氪因子(困难的串)