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. codeforces 336 Div.2 B. Hamming Distance Sum

    题目链接:http://codeforces.com/problemset/problem/608/B 题目意思:给出两个字符串 a 和 b,然后在b中找出跟 a 一样长度的连续子串,每一位进行求相减 ...

  2. Myeclipse常用快捷键

    转自:http://zjxbw.blog.51cto.com/2808787/543792 Ctrl+Shift+L    显示所有快捷键 Ctrl+K      参照选中的词(Word)快速定位到下 ...

  3. app上传到app Store常见问题

    一.首先看一下提交界面出现的问题(能成功打包成.ipa) 产生问题的原因如下:由于工程中含有sub project,而sub project中有private或public的文件导致的.这样的应用往往 ...

  4. 将rabbitmq整合到Spring中手动Ack

    如果要手动ack,需要将Listener container 的 acknowledge 设置为manul,在消费消息的类中需实现ChannelAwareMessageListener接口. over ...

  5. VGA信号一些分辨率的参数(摘抄)

    摘抄自:http://group.chinaaet.com/273/4100029440 VGA的接口时序如图所示,场同步信号VSYNC在每帧(即送一次全屏的图像)开始的时候产生一个固定宽度的高脉冲, ...

  6. 手机站点动态效果插件TouchSlide

    今天看到TouchSlide插件,觉得非常不错,关于使用情况请看demo,下载地址:http://www.superslide2.com/TouchSlide/downLoad.html

  7. .NET 在浏览器中下载TXT文件

    通常我们用浏览器打开Txt文件时候,浏览器会直接打开,我们想要txt下载到本地该怎么操作,用js也可以,单不能兼容所有的浏览器,所以我们可以在服务端做处理,代码如下: //TXT文件生成页面 publ ...

  8. 无废话ExtJs 入门教程十五[员工信息表Demo:AddUser]

    无废话ExtJs 入门教程十五[员工信息表Demo:AddUser] extjs技术交流,欢迎加群(201926085) 前面我们共介绍过10种表单组件,这些组件是我们在开发过程中最经常用到的,所以一 ...

  9. HDU4495 Rectangle

    求组成的等腰三角形面积最大值. 对此题的总结:暴力出奇迹 组成的三角形放置方式一共只有4种,用ans表示目前已知的最长三角形的边长,从上到下,从左到右枚举顶点,再枚举边长,一个重要剪枝是枚举边长l时先 ...

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

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