TZOJ 3522 Checker Challenge(深搜)
描述
Examine the 6x6 checkerboard below and note that the six checkers are arranged on the board so that one and only one is placed in each row and each column, and there is never more than one in any diagonal. (Diagonals run from southeast to northwest and southwest to northeast and include all diagonals, not just the major two.)
Column
1 2 3 4 5 6
-------------------------
1 | | O | | | | |
-------------------------
2 | | | | O | | |
-------------------------
3 | | | | | | O |
-------------------------
4 | O | | | | | |
-------------------------
5 | | | O | | | |
-------------------------
6 | | | | | O | |
-------------------------
The solution shown above is described by the sequence 2 4 6 1 3 5, which gives the column positions of the checkers for each row from 1 to 6:
ROW 1 2 3 4 5 6
COLUMN 2 4 6 1 3 5
This is one solution to the checker challenge. Write a program that finds all unique solution sequences to the Checker Challenge (with ever growing values of N). Print the solutions using the column notation described above. Print the the first three solutions in numerical order, as if the checker positions form the digits of a large number, and then a line with the total number of solutions.
输入
A single line that contains a single integer N (6 <= N <= 13) that is the dimension of the N x N checkerboard.
输出
The first three lines show the first three solutions found, presented as N numbers with a single space between them. The fourth line shows the total number of solutions found.
样例输入
6
样例输出
2 4 6 1 3 5
3 6 2 5 1 4
4 1 5 2 6 3
4
题意
N*N的棋盘填棋,要求每两个棋子不在同一行同一列同一斜,按字典序输出前3种,再输出总数。
题解
经典爆搜,跟八皇后有点类似,由于13比较慢,可以把表存下来。
代码
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 int n,h[15],l[15],out,sum; 5 int biao[]={4,40,92,352,724,2680,14200,73712}; 6 bool check(int p,int j) 7 { 8 for(int i=p-1;i>=1;i--) 9 if(abs(j-h[i])==p-i) 10 return 0; 11 return 1; 12 } 13 void dfs(int p) 14 { 15 if(out>3)return; 16 if(p==n+1) 17 { 18 sum++; 19 if(++out<=3) 20 { 21 printf("%d",h[1]); 22 for(int i=2;i<p;i++) 23 printf(" %d",h[i]); 24 printf("\n"); 25 } 26 return; 27 } 28 for(int i=1;i<=n;i++) 29 { 30 if(!l[i]&&check(p,i)) 31 { 32 l[i]=1; 33 h[p]=i; 34 dfs(p+1); 35 h[p]=0; 36 l[i]=0; 37 } 38 } 39 } 40 int main() 41 { 42 scanf("%d",&n); 43 dfs(1); 44 printf("%d",biao[n-6]); 45 return 0; 46 } 47 /* 48 2 4 6 1 3 5 49 3 6 2 5 1 4 50 4 1 5 2 6 3 51 4 52 1 3 5 7 2 4 6 53 1 4 7 3 6 2 5 54 1 5 2 6 3 7 4 55 40 56 1 5 8 6 3 7 2 4 57 1 6 8 3 7 4 2 5 58 1 7 4 6 8 2 5 3 59 92 60 1 3 6 8 2 4 9 7 5 61 1 3 7 2 8 5 9 4 6 62 1 3 8 6 9 2 5 7 4 63 352 64 1 3 6 8 10 5 9 2 4 7 65 1 3 6 9 7 10 4 2 5 8 66 1 3 6 9 7 10 4 2 8 5 67 724 68 1 3 5 7 9 11 2 4 6 8 10 69 1 3 6 9 2 8 11 4 7 5 10 70 1 3 7 9 4 2 10 6 11 5 8 71 2680 72 1 3 5 8 10 12 6 11 2 7 9 4 73 1 3 5 10 8 11 2 12 6 9 7 4 74 1 3 5 10 8 11 2 12 7 9 4 6 75 14200 76 1 3 5 2 9 12 10 13 4 6 8 11 7 77 1 3 5 7 9 11 13 2 4 6 8 10 12 78 1 3 5 7 12 10 13 6 4 2 8 11 9 79 73712 80 */
原文地址:https://www.cnblogs.com/taozi1115402474/p/11652720.html
- 【教程】使用TensorFlow对象检测接口标注数据集
- [喵咪大数据]Hadoop单机模式
- 【死磕Java并发】—–Java内存模型之happens-before
- 9个,程序员又爱又恨的编程习惯
- Dubbo 源码解析 —— Cluster
- 【死磕Java并发】—–Java内存模型之从JMM角度分析DCL
- 基于PhalApi2的Redis拓展
- [喵咪BELK实战(3)] logstash+filebeat搭建
- Dubbo源码解析 —— Router
- 【死磕Java并发】—–深入分析volatile的实现原理
- phalcon-入门篇3(优美的URL与Config)
- 数据库中间件 Sharding-JDBC 源码分析 —— 事务(一)之BED
- 熔断器 Hystrix 源码解析 —— 命令执行(二)之执行隔离策略
- phalapi-入门篇4(国际化高可用和自动生成文档)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 逐行阅读Spring5.X源码(一) BeanDefinition,起点
- linux 磁盘占满 查看占用
- 逐行阅读Spring5.X源码(二) BeanDefinition的父接口-AttributeAccessor 、BeanMetadataElement ,进阶
- 64. Vue中的插槽slot
- 65. Vue中的作用域插槽
- SpringBoot : 全局异常配置
- springboot事务管理
- Java : 分享一个通用的获取请求客户端IP的方法
- 一套常用的css初始化样式
- Octave 笔记
- VSCode如何设置Vue前端的debug调试
- Istio安全-授权(实操三)
- SpringBoot入门建站全系列(三十六)AspectJ做AOP日志管理
- 图像处理笔记(1)----OpenCV 图像BGR转RGB
- Intellij IDEA常用操作整理手册