UVA 129困难的串【DFS】】的更多相关文章

题目链接 题目大意: 给出n,l:要求按特定格式输出由前l个大写字母构成的按字母表排列的第n个没有连续重复子串的字符串以及该字符串长度. 此题是一道dfs递归回溯的基础题,难点在于对当前字符串是否有连续重复子串的判断,具体做法是这样的,以长度为对象枚举以新添进字符为尾巴的子串,看是否重复. 但是我还是有一点疑问,为什么我将这段代码做出下列改动,就会Runtime error! #include <cstdio> ]; int n, L, cnt;//cnt记录已经生成的合法字符串的个数 int…
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=65 题意:输出不包含两个相邻的重复子串. 思路:这就跟八皇后问题是一样的,注意判断子串是否相同就可以了. #include<iostream> using namespace std; int n, l; ]; int flag; int cnt; void dfs(int cu…
 Krypton Factor Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 392    Accepted Submission(s): 174 Problem Description You have been employed by the organisers of a Super Krypton Factor Conte…
回溯法,只需要判断当前串的后缀,而不是所有的子串 #include<iostream> #include<cstdio> using namespace std; ]; int n,l,cnt; int bfs(int cur) { if(cnt++==n) { ; i<cur; i++) printf("%c",'A'+s[i]); cout<<endl; ; } ; i<l; i++) { s[cur]=i; ; ; j*<=c…
原题:https://uva.onlinejudge.org/external/1/129.pdf 按照字典顺序生成第n个“困难的串” “困难的串”指的是形如ABAB, ABCABC, CDFGZEFGZE的串,它们都有相邻的重复子字符串 字母的范围是L,既 'A'到'A' + L 分析: 大体上这是一道生成排列组合的题.难点在于我们如何判断当前生成的串是"困难的串" 我们首先采用递归按照字典顺序从小到大生成串, 那么每一次我们处理的都是前一个"困难的串", 既满足…
题意:求由字母表前L个字母组成的字典序第n小的困难串.(如果一个字符串包含两个相邻的重复子串,则称它是"容易的串",其他串称为"困难的串".) 分析:回溯时,检查枚举的当前串是否为困难串的方法:将最后一个字母(下标为cur)与第cur-j个字母不断依次向前比较j个字母. 采用此种方法的原因是,前面的串都已经是回文串. 例如:ABAC,不需检查每个长度为偶数的串是否符合要求,因为枚举的每一步都保证是困难串,所以长度为2的串只需检查AC,无需检查AB,BA. #prag…
困难的串 题意: 如果一个字符串包含两个相邻的重复子串,则称它是“容易的串”,其他串称为“困难的串”.例如,                 BB.ABCDABCD都是容易的串,而D.DC.ABDAD.CBABCBA都是困难的串. 输入正整数n和L,输出由前L个字符组成的.字典序第k个困难的串.例如,当L=3时,前7个困难的串          分别为A.AB.ABA.ABAC.ABACA.ABACAB.ABACABA.输入保证答案不超过80个字符. 样例输入: 7  3 30 3 样例输出:…
题目: 问题描述:如果一个字符串包含两个相邻的重复子串,则称它为容易的串,其他串称为困难的串.如:BB,ABCDACABCAB,ABCDABCD都是容易的,A,AB,ABA,D,DC,ABDAB,CBABCBA都是困难的. 输入正整数L,n,输出由前L个字符(大写英文字母)组成的,字典序第n小的困难的串. 例如,当L=3时,前7个困难的串分别为:A,AB,ABA,ABAC,ABACA,ABACAB,ABACABA. n 指定为4的话,输出ABAC. 代码: import java.util.Sc…
题意 : 如果一个字符串包含两个相邻的重复子串,则称它是“容易的串”,其他串称为“困难的 串”.例如,BB.ABCDACABCAB.ABCDABCD都是容易的串,而D.DC.ABDAB. CBABCBA都是困难的串.程序从输入中读取多行数据,每行包括两个整数n和L(即按此顺序给出),其中n > 0,L的范围是1 ≤ L ≤ 26.根据这些输入,程序要按照字母表升序打印出第n个“hard”字串(由字母表中的前L个字母构成),并在接下来的一行打印这个串的长度.按照上述规则,第一个串应该是“A”.对于…
暴力求解 大致题意 如果一个字符串含有相邻的重复字串称为容易的串,反之为非容易 求字典序第n困难的串…… 大致思路,暴力如果是容易的串停过,然后困难的串继续求解tot++ 总之先记着吧…… 最后输出格式…… uva 129 #include <iostream> #include <cstdio> #include <cmath> #include <cstring> #include <algorithm> #include <cstdl…