UVA129KryptonFactor
来源:互联网 发布:一屋窑玻璃茶具淘宝 编辑:程序博客网 时间:2024/05/22 16:55
//UVA129KryptonFactor#include<cstdio>#include<cstdlib>#include<cstdlib>#include<cstring>const int MAXN = 80 + 5;int cnt = 0;int a[MAXN];int n, L;int dfs(int cur) {if(cnt++ == n) {for(int i = 0; i < cur; i++) {if(i && i % 4 == 0 && i % 64 != 0) printf(" ");if(i && i % 64 == 0) printf("\n");printf("%c", 'A' + a[i]);}printf("\n");printf("%d\n", cur);return false;}else {for(int i = 0; i < L; i++) { bool ok = 1;a[cur] = i;//printf("cur = %d, a[cur] = %c\n", cur, 'A' + i);for(int j = 1; 2 * j <= cur + 1; j++) { bool equal = 1;for(int k = 0; k < j; k++) if(a[cur - k] != a[cur - k - j]) {///加入一个字符,就判断以这个字符为末尾的j长度的串和在此之前的//j长度的串是否相等,本题回溯法核心!! // printf("a[%d] = %c, a[%d] = %c\n", cur - k, 'A' + a[cur - k], cur - k - j, 'A' + a[cur - k - j]);equal = false; break;}if(equal) {ok = 0; break;//只要出现一种不满足的串,则不符合要求 } }// printf("ok = %d\n", ok); if(ok) if(!dfs(cur + 1)) return false;}}//printf("cnt = %d\n", cnt);return true;}int main() {while(scanf("%d%d", &n, &L) == 2 && n) {memset(a, 0, sizeof(a));cnt = 0;dfs(0);}return 0;}/*7 330 30 0*/
阅读全文
0 0
- UVA129KryptonFactor
- 两个队列实现一个栈
- Java学习路线图及一些Java学习网站
- Android Studio常用快捷键
- ARM汇编的.balignl对齐实验
- select2如何设置默认空值
- UVA129KryptonFactor
- Spring boot (一) Hello World
- strchr, strrchr, strchrnull
- windows2003的vpn服务提示800错误
- 网络的使用-安卓基础知识整理
- call apply callee和caller之间的区别
- Android 水平加载图片 自定义 HorizontalScrollView,防止一次性加载出现性能问题,防止OOM
- 自定义标签中的重定向和转发的区别
- ubuntu16.04 + Kdevelop + ROS开发