回溯法。

使用26个字母中前L个字母,要求输出一个不存在相同的相邻子串的序列,该序列应是所有合法序列中字典序第N小的。

DFS枚举所有可行序列,因为序列长度不定所以解答树中除根节点之外的每个结点都算合法序列,得到N个合法序列后停止枚举。每次填入字符后只需检查刚填入的字符是否形成了一对相同的相邻子串,因为填入前的序列已经被确认过是合法的。


#include <iostream>
using namespace std;
int n, l, len;
char a[99];bool check(int p) {for(int k = 1; k * 2 <= p + 1; k++) {bool same = true;int i = p, j = p - k;for(int t = 0; t < k; t++)if(a[i--] != a[j--]) same = false;if(same) return false;}return true;
}void dfs(int cur) {if(cur && --n == 0)len = cur;for(char c = 'A'; c < 'A' + l && n; c++) {a[cur] = c;if(!check(cur)) continue;dfs(cur + 1);}
}void printAns() {cout << a[0];for(int i = 1; i < len; i++) {if(i % 64 == 0) cout << endl;else if(i % 4 == 0) cout << ' ';cout << a[i];}cout << endl << len << endl;
}int main() {while(cin >> n >> l && n) {dfs(0);printAns();}return 0;
}

UVa129 Krypton Factor相关推荐

  1. Uva129 Krypton Factor【dfs回溯】【例题7-5】

    题目:Krypton Factor 题意:如果一个字符串包含两个相邻的重复子串,则称它是"容易的串",其他串称为"困难的串".输入n,L,输出由前L个字符组成的 ...

  2. 回溯法之避免无用判断 UVA129 Krypton Factor困难的串

    题意:如果一个字符串包含两个相邻的重复子串,则称它是"容易的串",其他串称为"困难的串" 输入正整数n和L,输出由前L个字符组成的并且它的字典序是第n小的串,和 ...

  3. Krypton Factor UVA - 129

    题目链接:Krypton Factor UVA - 129 #include<iostream> #include<string> #include<cstdio> ...

  4. 129:Krypton Factor

    Krypton Factor 注意 && 别写成 & 了... #include<bits/stdc++.h> using namespace std; const ...

  5. UVA129 困难的串 Krypton Factor

    题目描述 将一个包含两个相邻的重复子串的子串,称为"容易的串",其他为"困难的串". 输入正整数n和l,输出由前l个字符组成的,字典序第k小的困难的串. 输入样 ...

  6. 紫书搜索 例题7-5 UVA - 129 Krypton Factor

    题目链接: https://vjudge.net/problem/UVA-129 题意: 题解: 代码: #include <bits/stdc++.h> using namespace ...

  7. UVa 129 - Krypton Factor(回溯法)

    2018-5-12 如何判断一个字符串是否包含连续重复子串呢? 我们可以检查所有长度为偶数的子串,判断每一个子串的前半部分是否与后半部分相同,但是实际上我们只需每一次判断当前串的后缀即可,因为前面的我 ...

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

    题意:求由字母表前L个字母组成的字典序第n小的困难串.(如果一个字符串包含两个相邻的重复子串,则称它是"容易的串",其他串称为"困难的串".) 分析:回溯时,检 ...

  9. ACM题解系列之一:刘汝佳:《算法竞赛入门经典》(第2版)

    题是书中的题,解法参照了书中的解法,不少解法都做了简化和改进. 做程序,就要努力做到自己的程序是最好的! 第3章例题 POJ1488 UVA272 UVALive5381 TEX Quote[输入输出 ...

最新文章

  1. 网络新手ip隐藏器_动态IP代理的用途
  2. 新疆兵团开展迎新春“送文化下基层”慰问演出活动
  3. 让人失望透顶的 CSDN 博客改版
  4. php 去重_php求两数组交集的四种方法详解
  5. 从2018年12月起陆续将博客搬至博客园(cnblogs)
  6. IntelliJ IDEA常用快捷键小结
  7. 一文弄懂神经网络中的反向传播法——BackPropagation【转】
  8. 数据库原理与应用(SQL Server)笔记 第二章 简单数据查询
  9. C++ 获取函数耗时
  10. 标榜 AI 的百度又玩区块链,跟风布局“加密猫”?
  11. Fedora9虚拟机下与windows共享文件
  12. 不可逆加密算法-MD5
  13. 关于Google Chrome浏览器离线安装包下载方法
  14. ORA-1652: unable to extend temp segment by 128 in tablespace TEMP
  15. 知识产权管理系统 开源_当前的知识产权格局如何影响开源
  16. 输入经纬度在地图中标注位置(百度地图)
  17. 粗略的了解Javascript
  18. termux怎么修改php版本,玩转Termux
  19. 面向对象综合训练综合练习
  20. JWT生成Token及解析Token

热门文章

  1. Android Service后台下载 广播(Eventbus)通知并展示
  2. MAR与MDR是什么?
  3. Pandas中at、iat函数详解
  4. 联想拯救者R720安装Win10(以及使用PE老毛桃安装不能识别固态硬盘问题)
  5. 计算考试成绩的总分,最高分,最低分,平均分以及成绩的排名算法
  6. 基于28335实现的旋变软解码 1、在0-360°的范围内,与TI方案的偏差非常小,平均偏差最大为0.0009弧度左右,最大偏差0.0016弧度左右
  7. Oracle锁表以及解表
  8. 生成带参数的2维码(微信2次开发)
  9. cad测量快捷键 距离 面积
  10. Data Whale第20期组队学习 Pandas学习—缺失数据