困难的串

  题意:

  如果一个字符串包含两个相邻的重复子串,则称它是“容易的串”,其他串称为“困难的串”。例如,                 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

  样例输出:

  ABACABA

  ABACABCACBABCABACABCACBACABA

  思路:构建一个字符串a[],往其中不断增加满足条件的字符,直至字符串大小为n,即为所求字符串;

假设当前串长度为cur,则字符串a[cur-1]的所有子串都是困难的,所以只需判断字符串a[cur]是否困难即可;

  代码:

 #include <bits/stdc++.h>
#define MAXN 100
using namespace std; int a[MAXN], n, l, cnt=; int dfs(int cur)
{
if(cnt++==n) //**每当cnt+1必能增加一个合法字符,当cnt=n时即得到所求字符串
{
for(int i=; i<n; i++)
{
printf("%c", a[i]+'A');
}
printf("\n");
return ;
}
for(int i=; i<l; i++)
{
a[cur]=i; //****尝试选中字符i+"A"
int flag=;
for(int j=; j*<=cur+; j++) //***当前构建长度为2*j的字符串
{
int k;
for(k=; k<j; k++) //***判断当前字符串是否是容易的串
{
if(a[cur-k]!=a[cur-k-j])
{
break;
}
}
if(k==j) //***如果k=j,即其为容易的串
{
flag=;
break;
}
}
if(flag) //***如果当前串为困难的串,并且cnt!=n,继续递归,如果cnt=n,递归结束,直接退出
{
if(!dfs(cur+))
{
return ;
}
}
}
return ;
} int main(void)
{
std::ios::sync_with_stdio(false),cin.tie(),cout.tie();
cin >> n >> l;
dfs();
return ;
}

困难的串(dfs)的更多相关文章

  1. UVA129 Krypton Factor 困难的串 dfs回溯【DFS】

     Krypton Factor Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  2. UVa 129 Krypton Factor困难的串 (dfs 递归搜索)

    回溯法,只需要判断当前串的后缀,而不是所有的子串 #include<iostream> #include<cstdio> using namespace std; ]; int ...

  3. 【DFS】困难的串

    题目: 问题描述:如果一个字符串包含两个相邻的重复子串,则称它为容易的串,其他串称为困难的串.如:BB,ABCDACABCAB,ABCDABCD都是容易的,A,AB,ABA,D,DC,ABDAB,CB ...

  4. uva129 - Krypton Factor 7.4.3 困难的串

      7.4.3困难的串 学习点:dfs加入返回值,递归搜索过程中如果有一个成功,就直接退出 //7.4.3 困难的串 #include<cstdio> #include<cstrin ...

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

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

  6. ACM题目————困难的串

    题目描述 如果一个字符串包含两个相邻的重复子串,则称他是“容易的串”,其他串称为"困难的串".例如,BB,ABCDACABCAB,ABCDABCD都是容易的串,而D,DC,ABDA ...

  7. Krypton Factor 困难的串-Uva 129(回溯)

    原题:https://uva.onlinejudge.org/external/1/129.pdf 按照字典顺序生成第n个“困难的串” “困难的串”指的是形如ABAB, ABCABC, CDFGZEF ...

  8. UVA 129困难的串【DFS】

    题目链接 题目大意: 给出n,l:要求按特定格式输出由前l个大写字母构成的按字母表排列的第n个没有连续重复子串的字符串以及该字符串长度. 此题是一道dfs递归回溯的基础题,难点在于对当前字符串是否有连 ...

  9. Applese的回文串-dfs

    链接:https://ac.nowcoder.com/acm/contest/330/I来源:牛客网 题目描述 自从 Applese 学会了字符串之后,精通各种字符串算法,比如……判断一个字符串是不是 ...

随机推荐

  1. 霸气!Nginx 中缓存静态文件秘籍

    导读 这篇教程说明你应该怎样配置 nginx.设置 HTTP 头部过期时间,用 Cache-Control 中的 max-age 标记为静态文件(比如图片. CSS 和 Javascript 文件)设 ...

  2. Android应用签名

    http://www.cnblogs.com/ghj1976/archive/2011/07/18/2109381.html 为了要签名? 开发Android的人这么多,完全有可能大家都把类名,包名起 ...

  3. JavaScript 与函数式编程

    原文:https://bethallchurch.github.io/JavaScript-and-Functional-Programming/ 译文:http://www.zcfy.cc/arti ...

  4. centos7 开机/etc/rc.local 不执行的问题

    最近发现centos7 的/etc/rc.local不会开机执行,于是认真看了下/etc/rc.local文件内容的就发现了问题的原因了 #!/bin/bash # THIS FILE IS ADDE ...

  5. backbone模型层浅析

    Model层有两个类: Model, Collection 1.Model 不翻文档,我们用代码说话. 首先分析下类. var myM = Backbone.Model.extend({})//构造一 ...

  6. 应用HTK搭建语音拨号系统4: 识别器评估

    选自:http://maotong.blog.hexun.com/6261890_d.html 苏统华 哈尔滨工业大学人工智能研究室 2006年10月30日 声明:版权所有,转载请注明作者和来源 该系 ...

  7. ubuntu安装LAMP环境

    1. LAMP 的安装 sudo apt-get install apache2 mysql-server mysql-client php5 php5-gd php5-mysql 由于LAMP大部分 ...

  8. linux——基本配置

    环境:Ubuntu 12.04.2 LTS (GNU/Linux 3.5.0-23-generic i686) 网络配置 #临时改变 #修改IP和子网掩码 sudo ifconfig eth0 192 ...

  9. iframe操作

    http://www.jb51.net/article/15780.htmiframe自适应高度:经典<iframe src="http://www.lanyunwork.com/&q ...

  10. JavaBean转换为XML的源码

    package com.cmge.utils; import java.util.Iterator; import com.cmge.org.oa.bean.OADepartment; import ...