0.这道题的输出 处理起来挺麻烦的

以后类似的可以借鉴一下

;i<cur;i++)
        {
             && i%==)
                printf("\n%c",a[i]);
             && i%==)
                printf(" %c",a[i]);
            else
                printf("%c",a[i]);
        }

1.还有一个是输出 第n小  怎么来控制第n小   利用的是一个初始化为0的cnt  每当满足所有条件 进入递归边界的时候 判断一下cnt是否等于n 然后cnt++ 

  初始化为0的原因是 第一次在主函数中调用的时候 执行判断语句 cnt++ == n的时候 cnt就更新为1了,所以是初始化为0而不是1.

2.是判断是否是简单的串的方法

这是一个由前L个字符组成的字符串,所以有一个i<l的for循环和  a[cur]='A'+i;的语句

int ok为1 表示困难串,因为 判断完之后是困难串,才进入递归dfs

之后,我们是判断后缀是否相同,而不是整个字符串拿来判断,那样会做很多重复的工作导致效率下降。

  初始化isequal=1,然后开始判断,一旦发现不等的,就isequal=0然后break

在循环外面 判断 if(isequanl==1)  如果是1  则是简单串 则ok=0;

如果ok==1  则进入递归  就是这样一个逻辑

;i<l;i++)
    {
        a[cur]='A'+i;
        ;
        ;j*<=cur+;j++)
        {
            ;

            ;k<j;k++)
                if(a[cur-k]!=a[cur-j-k])
                    {isequal=;break;}

            )
            {
                //如果是简单串 则ok=0;
                ok=;break;
            }
        }
         && getans==);
    }

3.   得到答案之后记得更新getans 为true  终止剩下的dfs 不然会一直输出

 或者  dfs加入返回值,递归搜索过程中如果有一个成功,就直接退出!!!  使用int型的dfs  找到答案后return 0    其余dfs均return 1  

)) ;
 #include <cstdio>
 int n,l,cnt;
 ];
 bool getans;
 void dfs(int cur)
 {
     if(cnt++ == n)
     {
         getans=true;
         ;i<cur;i++)
         {
              && i%==)
                 printf("\n%c",a[i]);
              && i%==)
                 printf(" %c",a[i]);
             else
                 printf("%c",a[i]);
         }
         printf("\n");

         printf("%d\n",cur);
     }
     ;i<l;i++)
     {
         a[cur]='A'+i;
         ;//ok=1表示困难的串
         ;j*<=cur+;j++)
         {
             ;

             ;k<j;k++)
                 if(a[cur-k]!=a[cur-j-k])
                     {isequal=;break;}

             )
             {
                 //如果是简单串 则ok=0;
                 ok=;break;
             }
         }
          && getans==);
     }
 }
 int main()
 {
     while(scanf("%d%d",&n,&l)!=EOF)
     {
          && l==) break;
         getans=false;
         cnt=;
         dfs();
     }

     ;
 }

Uva 129 Krypton Factor的更多相关文章

  1. UVA.129 Krypton Factor (搜索+暴力)

    UVA.129 Krypton Factor (搜索+暴力) 题意分析 搜索的策略是:优先找长串,若长串不合法,则回溯,继续找到合法串,直到找到所求合法串的编号,输出即可. 注意的地方就是合法串的判断 ...

  2. UVa 129 Krypton Factor【回溯】

    学习的紫书的回溯,理解起来还是好困难的说啊= = #include<iostream> #include<cstdio> #include<cstring> #in ...

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

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

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

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

  5. UVa 129 Krypton Factor (DFS && 回溯)

    题意 : 如果一个字符串包含两个相邻的重复子串,则称它是“容易的串”,其他串称为“困难的 串”.例如,BB.ABCDACABCAB.ABCDABCD都是容易的串,而D.DC.ABDAB. CBABCB ...

  6. uva 129 krypton factors ——yhx

     Krypton Factor  You have been employed by the organisers of a Super Krypton Factor Contest in which ...

  7. 129 - Krypton Factor

    /*UVa129 - Krypton Factor --回溯问题.看例子可知道确定该字符串是按照从左到右依次考虑每个位置,当前位置填不上所有的字符时,需要回溯. -- */ #define _CRT_ ...

  8. UVA 129_ Krypton Factor

    题意: 一个字符串含有两个相邻的重复的子串,则称这个串为容易的串,其他为困难的串,对于给定n,l,求出由前l个字符组成的字典序第n小的困难的串. 分析: 按字典序在字符串末尾增加新的字符,并从当前字符 ...

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

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

随机推荐

  1. Luncence .Net 使用

    public partial class Form1 : Form { public Form1() { InitializeComponent(); } //标准分词 private void bu ...

  2. September 21st 2016 Week 39th Wednesday

    Don't try so hard, the best things come when you least expect them. 不要着急,最好的总会在最不经意的时候出现. Always tur ...

  3. Centos以rpm方式进行安装MySql

    安装过很多次mysql了,却没好好总结过,每次安装完了都忘,下次还要重新Google,这次总结下,自己以后也有的查. 1.安装采用的的rpm包的方式,安装前要先看系统内是否安装了旧版本的MySql和m ...

  4. hdu1141(二进制数位,二分,打表)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1141 题意:××公司是制造computer的,1960年它造的computer是4bit的,之后每10 ...

  5. JAVA基础学习之final关键字、遍历集合、日期类对象的使用、Math类对象的使用、Runtime类对象的使用、时间对象Date(两个日期相减)(5)

    1.final关键字和.net中的const关键字一样,是常量的修饰符,但是final还可以修饰类.方法.写法规范:常量所有字母都大写,多个单词中间用 "_"连接. 2.遍历集合A ...

  6. Bootstrap简介

    接下来的一段时间,想研究一下现有的网页框架,第一个不容错过的就是Bootstrap,Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架.Bootstrap 是基于 HTML.CS ...

  7. 攻城狮在路上(叁)Linux(二十)--- Linux磁盘格式化

    磁盘完成分区之后,进行格式化,生成文件系统. 命令格式: mkfs [-t 文件系统格式] 设备文件名  <== 使用 mkfs [Tab][Tab] 可以查看linux支持的文件系统格式 示例 ...

  8. angularjs 权威指南 版本 1.2.6

    1 $rootScope  run  : run 方法初始化全局的数据 ,只对全局作用域起作用 如$rootScope <script src="http://apps.bdimg.c ...

  9. php计算几分钟前、几小时前等

    function format_date($time){ $t=time()-$time; $f=array( '=>'年', '=>'个月', '=>'星期', '=>'天' ...

  10. myeclipse报错: java compiler level does not match the version of the installed java project facet

    在升级到myeclipse 9.0正式版后,很无耐地出发现了一个error级别的错误,虽然没在代码中,但是看着让人很不舒服.第一反应就是到网上搜索解决之道,结果,网站说在工程的属性中去找个叫啥&quo ...