uva129
2016-05-07 20:20
399 查看
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19665
/* solution: 直接使用dfs搜索穷举 note: 注意每当dfs一层时要判断是否为困难串时,只需判断当前串的字符串即可,原理和8皇后一样。 因为前面都已经在上面几层的dfs时判断完了。 date: 2016/5/7 */ #include <iostream> #include <cstdio> #include <cstring> using namespace std; int n, L, cnt, vis[85]; //表示已经尝试到第几个位置 int c[85]; int dfs(int cur) { //在从0开始的第k个位置上尝试放置字母使其满足条件 if(cnt++ == n) { // for(int i = 0; i < cur; i++) { if(i % 64 == 0 && i > 0) printf("\n"); else if(i % 4 == 0 && i > 0) printf(" "); printf("%c", 'A' + c[i]); } printf("\n%d\n", cur); return 0; } for(int i = 0; i < L; i++) { c[cur] = i; int ok = 1; for(int j = 1; j * 2 <= cur + 1; j++) { int equa = 1; for(int k = 0; k < j; k++) { //注意只需判断当前串的前一半以及后一半 if(c[cur - k] != c[cur - j - k]) { equa = 0; break; } } if(equa) { ok = 0; break; } } if(ok) if(!dfs(cur + 1)) return 0; //在保证当前串是困难串的情况下才递归求下一个困难串 } return 1; } int main() { while(~scanf("%d%d", &n, &L) && n > 0) { memset(vis, 0, sizeof(vis)); cnt = 0; dfs(0); } return 0; }
相关文章推荐
- Sublime Text2安装smali代码语法高亮插件
- 《CLR via C#》学习笔记【2】
- Nginx 之五: Nginx服务器的负载均衡、缓存与动静分离功能
- HTML中<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">理解
- Codeforces 665D Simple Subset【构造】
- Codeforces 665D Simple Subset【构造】
- jQuery操作数组的工具方法
- php与数据库的连接运行
- 采用C#实现软件自动更新的方法
- Nonlinear Transform
- python numpy
- 学习Java九大内置对象
- bzoj 1391: [Ceoi2008]order(最小割)
- android基础--tools:context=".MainActivity"作用
- 【图像处理】常见图像噪声模型和生成方法
- Linux驱动LCD driver学习总结
- codeforce 350 A. Holidays
- jQuery核心函数
- java多线程学习-java.util.concurrent详解(一) Latch/Barrier
- POJ 1129 Channel Allocation