uva 129 Krypton Factor (DFS+巧妙的判断方法)
2015-10-29 23:06
381 查看
原题链接:
UVA 129
参考刘汝佳书《算法竞赛入门经典(第二版)》P195.
我是搬运工。
1.记录字母到‘A’的差值。
2.由于前面的子串已经判断过,所以只需判断含有新加字符的所有后缀子串。
3.注意输出格式
代码如下:
UVA 129
参考刘汝佳书《算法竞赛入门经典(第二版)》P195.
我是搬运工。
1.记录字母到‘A’的差值。
2.由于前面的子串已经判断过,所以只需判断含有新加字符的所有后缀子串。
3.注意输出格式
代码如下:
#include<iostream> #include<cstdio> #include<cstring> using namespace std; const int MAXN=80+5; int s[MAXN]; int cnt; int n,l; bool DFS(int pos) { if(cnt++==n)//cnt代表第几小的困难的串 { for(int i=0;i<pos;i++) { printf("%c",'A'+s[i]); if(i==63&&i!=pos-1) printf("\n"); else if(i%4==3&&i!=pos-1) printf(" "); } printf("\n%d\n",pos); return false; } for(int i=0;i<l;i++) { s[pos]=i; bool q=true; for(int j=1;j*2<=pos+1;j++)//一共有pos+1个字符 { bool p=false; for(int k=0;k<j;k++) { if(s[pos-k]!=s[pos-k-j]) { p=true; break; } } if(!p) { q=false; break; } } if(q) { if(!DFS(pos+1)) return false; } } return true; } int main() { while(scanf("%d%d",&n,&l)!=EOF&&(n&&l)) { memset(s,0,sizeof(s)); cnt=0; DFS(0); } return 0; }
相关文章推荐
- 魔兽军团前端项目的一些总结
- 3D引擎:Horde3D:App类
- 【跟我学Apache Commons】【一】综述
- js实现复选框全选和反选功能
- 创业的第五十五天
- 流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls
- python学习笔记(一)
- JVM学习--认识虚拟机
- 3D引擎:Horde3D:窗口类API:glfw
- Reverse Linked List
- X皮书之初识Redis(基本操作)
- 查了查Ubuntu Studio有感 [如转载请注明出处]
- HashMap 排序,按照 value,找出字符出现次数最多的
- Uva136——Ugly Numbers
- 第二百一十天 how can I 坚持
- PHP开发环境之WAMP独立安装
- Java中的回调机制
- iOS开发UI篇—程序启动原理和UIApplication
- 1.7-nagios配置邮件告警
- Uva400——Unix ls