1. /*UVa129 - Krypton Factor
  2. --回溯问题。看例子可知道确定该字符串是按照从左到右依次考虑每个位置,当前位置填不上所有的字符时,需要回溯。
  3. --
  4. */
  5. #define _CRT_SECURE_NO_DEPRECATE
  6. #include<iostream>
  7. #include<fstream>
  8. #include<time.h>
  9. #include<vector>
  10. using namespace std;
  11. const int maxn = 1000;
  12.  
  13. char ans[maxn];
  14. int k, L, tol;
  15. bool flag;
  16.  
  17. bool isleg(int curr){
  18. bool res = 1;
  19. int i, b;
  20. for (b = 0; b < curr; b++){
  21. int len = curr - b + 1;
  22. if (len & 1)continue;
  23. for (i = 0; i < len / 2; i++){
  24. if (ans[b+i] != ans[i + b + len / 2])break;
  25. }
  26. if (i == len / 2)res = 0;
  27. if (!res)break;
  28. }
  29. return res;
  30. }
  31. void dfs(int curr){
  32. if (tol==k){ //搜索到了解
  33. for (int i = 0; i < curr; i++){
  34. if (i&&i % 4 == 0){
  35. if (i%64== 0)printf("\n");
  36. else printf(" ");
  37. }
  38. printf("%c", ans[i]);
  39. }
  40. printf("\n%d\n",curr);
  41. flag = 1;
  42. return;
  43. }
  44. if (flag)return;
  45. for (char i = 'A'; i < 'A' + L; i++){
  46. ans[curr] = i;
  47. if (isleg(curr)){
  48. tol++; //合法解,tol++
  49. dfs(curr + 1);
  50. }
  51. }
  52. }
  53. int main(){
  54. while (scanf("%d%d", &k, &L) && k&&L){
  55. flag = 0;
  56. tol = 0;
  57. dfs(0);
  58. }
  59. return 0;
  60. }

  

129 - Krypton Factor的更多相关文章

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

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

  2. Uva 129 Krypton Factor

    0.这道题的输出 处理起来挺麻烦的 以后类似的可以借鉴一下 ;i<cur;i++) { && i%==) printf("\n%c",a[i]); & ...

  3. UVa 129 Krypton Factor【回溯】

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

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

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

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

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

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

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

  7. uva 129 krypton factors ——yhx

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

  8. Krypton Factor

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

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

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

随机推荐

  1. 201621123034 《Java程序设计》第11周学习总结

    作业11-多线程 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1. 源代码阅读:多线程程序BounceThread ...

  2. HTML快速入门

    我们经常上网浏览网页,来获取资讯.可网页是什么呢?它又是如何编写出来的呢? 网页又叫Web页面,我们经常可以在网页上看到文字.图片.视频等.我们所要说的HTML(超文本标记语言)就是构成网页文档的主要 ...

  3. 【CDN】- 什么是CDN

    高冷科普: CDN,Content Delivery Network缩写,即内容分发网络.通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量 ...

  4. asp+access win2008php+mysql /dedecms 配置总结

    1.  IIS 应用池  高级设置  启用32位应用程序:True 2. c盘window/Temp user 应该有管理权限           如果不行 creator owner 给予修改权限 ...

  5. node.js开发hello world

    在你的 D 盘下面创建一个 server.js,写入以下内容 ---------------------------------------------------- var http = requi ...

  6. weex 开发 (已放弃了)

    关于weex 开发 本菜已放弃使用了,当初选择使用weex 是为了同时支持h5 和 android / ios  三端:想法很不错,深入之后 突然发现,开发起来并没有很轻松,因为weex 中有些方法, ...

  7. 洛谷 P3157 [CQOI2011]动态逆序对 | CDQ分治

    题目:https://www.luogu.org/problemnew/show/3157 题解: 1.对于静态的逆序对可以用树状数组做 2.我们为了方便可以把删除当成增加,可以化动为静 3.找到三维 ...

  8. JS实现 java的Map

    Map = function () { this.objects = new Object(); // 加入元素 this.put = function (key, value) { this.obj ...

  9. sublime 设置代码片段不起作用的问题

    最近爱上了sublime 但是我也继续爱我的Vscode 安装sublime代码片段的时候,遇到了设置好的代码片段按  Tab建 不起作用的问题.快折磨死的时候灵光一闪: 首先检查设置的代码片段 &l ...

  10. XML格式化及解析

    XML格式化工具:notepad++   下载地址 http://rj.baidu.com/soft/detail/13478.html?ald    一个教程地址:http://jingyan.ba ...