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 sequence 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 and Output
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
类似8皇后问题的回溯法。
这里贴出判断的例子流程:
cur=0 0 =============== cur=1 01 j=1 k=0: if(S[cur-k] != S[cur-k-j]) if(S[1] != S[0]) ================ cur=2 010 j=1 k=0 ================= cur=3 j=1 k=0 s[3] == S[2] j=2 k=0,1 S[3] == S[1] S[2] == S[0] cur-j cur 0 1 0 0
特别注意要按照格式输出
#define RUN #ifdef RUN #include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h> #include <string> #include <iostream> #include <sstream> #include <map> #include <set> #include <vector> #include <list> #include <cctype> #include <algorithm> #include <utility> #include <math.h> #include <ctime> using namespace std; int n, L, cnt = 0; //全局辅助数组 int S[100]; // 返回0表示已经得到解,无须继续搜索 int dfs(int cur) { //最后生成的字符串长度为n if(cnt++ == n) { // 输出方案 int totalGroups = 0; int groups = 0; int groupLim = 16; //cout << cur/(4) << endl; for(int i = 0; i < cur; i++){ printf("%c", 'A'+S[i]); if((i+1)%4==0){ groups++; totalGroups++; if(groups >= groupLim){ groups = 0; printf("\n"); } else{ if(totalGroups != ceil(cur/4.0)){ printf(" "); } } } } printf("\n"); printf("%d\n", cur); return 0; } //依次尝试长度为L内的字符串,eg:L=3,则尝试i=0,1,2 for(int i = 0; i < L; i++) { S[cur] = i; int ok = 1; // 尝试长度为j*2的后缀(从cur的位置进行比较在cur前面j*2个元素(包括cur元素)是否会相等) for(int j = 1; j*2 <= cur+1; j++) { int equal = 1; //对cur前j*2个元素遍历比较 for(int k = 0; k < j; k++){ // 检查后一半是否等于前一半 if(S[cur-k] != S[cur-j-k]) { equal = 0; break; } } // 后一半等于前一半,方案不合法,因为我们要产生"困难的串" if(equal) { ok = 0; break; } } if(ok){ if(!dfs(cur+1)) return 0; // 递归搜索。如果已经找到解,则直接退出 } } return 1; } int main() { #ifndef ONLINE_JUDGE freopen("129.in", "r", stdin); freopen("out.out", "w", stdout); #endif while(scanf("%d%d", &n, &L)!=EOF && n && L){ memset(S, 0, sizeof(S)); int cur = 0; cnt = 0; dfs(cur); } return 0; } #endif
相关推荐
apk文件 kodi-17.6-Krypton-arm64-v8a(电视直播视频)apk文件 kodi-17.6-Krypton-arm64-v8a(电视直播视频)apk文件 kodi-17.6-Krypton-arm64-v8a(电视直播视频)apk文件 kodi-17.6-Krypton-arm64-v8a(电视直播...
标题中的“PyPI 官网下载 | python-heideltime-krypton-0.0.1.tar.gz”表明这是一个从Python Package Index(PyPI)官方源下载的软件包,名为`python-heideltime-krypton-0.0.1.tar.gz`。PyPI是Python社区广泛使用的...
标题 "pvr.iptvsimple-2.4.14-Krypton.zip" 暗示了这是一个关于Kodi媒体中心的扩展插件,名为“PVR IPTV Simple Client”。这个插件是专为Kodi设计的,用于接收并播放网络上的交互式电视服务,即IPTV(Internet ...
【开源项目-krypton97-go-relay-starter-kit】是一个基于Go语言的开源启动套件,专注于提供一种轻量级且易于使用的解决方案。这个项目旨在帮助开发者快速搭建自己的中间件或者代理服务,尤其是那些需要处理网络请求...
在了解PVR真空泵选型手册之前,先了解一下真空泵及PVR公司的发展背景。手册中提到了Agilent Technologies(安捷伦科技),这是一家知名的科技公司,致力于测试、测量和管理生命科学领域的业务。...
《C# WinForm开发中的美化神器:KryptonSuite 4.4.0-C#》 在C# WinForm应用开发中,我们常常面临一个挑战,那就是如何让应用程序的界面更加美观、专业,以吸引用户的注意力并提升用户体验。在这个领域,第三方控件...
kodi默认使用的英文输入法,要打汉字需设置成百度输入法
大家看清除,可是“Krypton.Suite”哦!!!
在压缩包中,"Krypton-master"可能包含了以下内容: 1. **Source** 目录:这个目录下通常会存放Krypton Toolkit的所有源代码示例项目。开发者可以通过查看和运行这些示例来学习如何在自己的项目中使用这些控件。...
《Krypton-OutlookGrid:打造出色Outlook风格的表格界面》 在软件开发中,用户界面(UI)的设计至关重要,因为它直接影响到用户的使用体验。"Krypton-OutlookGrid"是专为开发者设计的一个强大控件,它允许创建具有...
Cracked latest Krypton ComponentFactory Toolkit 4.4.0 1- Replace all dll's in <intallpath>\Bin\ and <intallpath>\Bin\PublisherSigned 2- Run register.bat from <intallpath>\Bin\
ComponentFactory.Krypton.Toolkit是一个专为WinForm应用设计的皮肤类库,它提供了丰富的用户界面元素,使得开发者可以轻松地创建出具有专业外观和感觉的应用程序。这个类库包含了一系列控件,这些控件覆盖了从基本...
Enigma2 PVR 用于Enigma2 PVR客户端插件。 Enigma2是一个开放源代码的电视接收器/ DVR平台,基于Linux的固件(OS映像)可以加载到来自不同制造商的许多基于Linux的机顶盒(卫星,地面,电缆或它们的组合)上。...
Component Factory krypton Toolkit 4.3.1.0 免费的48个windows控件
标题 "PyPI 官网下载 | Krypton-0.1.2.tar.gz" 提到的是一个在Python包索引(PyPI)上发布的开源软件包,名为“Krypton”。这个包的版本是0.1.2,且以tar.gz格式提供。tar.gz是一种常见的源代码压缩格式,它结合了...
PVR在两种类型的实体上运行: Sumodules: PVR存储库 PVR Pantahub PVR开发 PVR存储库 特征 带有对象存储的json格式的简单存储库 检出并将任何工作目录提交到存储库 用status和diff命令查看工作树的差异 ...
ComponentFactory krypton Toolkit 免费的48个windows控件
ComponentFactory.Krypton.Design
$ cd KryPtoN-Music-Bot $ pip install -r requirements.txt 设置config configs.py并进行编辑 执行! $ python3 -m krypton 赫鲁库 生成字符串会话[重要] 下载此文件 $ pip3 install pyrogram TgCrypto $ python...
软件名称:Krypton匿名浏览器:Krypton Anonymous APK名称:co.kr36.krypton.x 最新版本:101-903 支持ROM:4.1及更高版本 界面语言:英文软件 软件大小:19.77 M 开发者: Kr36 LLC 一个永远安全和保护个人隐私的...