题意:经典的八皇后问题

解法:

采用朴素的每一次放置都与前面的所有行进行比较,在N =13的时候时间会爆掉

《入门经典》上提供的方法很经典,vis数组的使用,具体见《入门经典》125页

/*
ID:lsswxr1
PROG:checker
LANG:C++
*/
#include<iostream>
#include<fstream>
#include<cmath>
#include<cstring>
using namespace std;
#define maxn 15
ifstream fin("checker.in");
ofstream fout("checker.out");
int N, tot;
int outputNums;
int curPuts[maxn];
int vis[30][30];
void dfs(int cur)
{if (cur == N){tot++;outputNums++;if (outputNums > 3){return;}for (int i = 0; i < N; i++){if (i == 0){fout << curPuts[i] + 1;}else{fout << " " << curPuts[i] + 1;}}fout << endl;return;}for (int i = 0; i < N; i++){if (!vis[0][i] && !vis[1][cur + i] && !vis[2][cur - i + N]){curPuts[cur] = i;vis[0][i] = vis[1][cur + i] = vis[2][cur - i + N] = 1;dfs(cur + 1);vis[0][i] = vis[1][cur + i] = vis[2][cur - i + N] = 0;}}}int main()
{fin >> N;tot = 0;memset(vis, 0, sizeof(vis));memset(curPuts, 0, sizeof(curPuts));dfs(0);fout << tot << endl;//cout<<ans<<endl;return 0;
}

转载于:https://www.cnblogs.com/rayforsure/p/3493322.html

USACO 1.5.4 Checker Challenge相关推荐

  1. usaco Section 1.5 Checker Challenge 最慢0.162秒0.0+n皇后问题位运算版(C语言)

    今天做USACO做到Section 1.5的Checker Challenge 直接dfs之后的结果是,超时.. 百度查查才想起来就是八皇后问题.有人讲怎么利用对称性怎么怎么优化,我没仔细看 直到看到 ...

  2. USACO 6.5.5 Checker Challenge 回溯

    http://train.usaco.org/usacoprob2?a=BI4LEPNXcEa&S=checker 题目大意:在一个N*N的棋盘上放棋子,要求每一行每一列都有一个,每一个对角线 ...

  3. USACO Section 1.5 Checker Challenge

    经典八皇后问题 只写的最基本的,对称剪枝,位运算都没有用,以后有时间再看 1 /* ID:linyvxi1 2 PROB:checker 3 LANG:C++ 4 */ 5 #include < ...

  4. usaco6.5.5 Checker Challenge

    一 原题 Checker Challenge Examine the 6x6 checkerboard below and note that the six checkers are arrange ...

  5. P1219 [USACO1.5]八皇后 Checker Challenge 题解

    background:给朋友讲题,顺便过了这道几年前遗留的题 P1219 [USACO1.5]八皇后 Checker Challenge - 洛谷 | 计算机科学教育新生态 (luogu.com.cn ...

  6. 洛谷P1219 [USACO1.5]八皇后 Checker Challenge(C语言)

    洛谷P1219 [USACO1.5]八皇后 Checker Challenge 题目 代码 这个八皇后问题也是经典入门深搜的题目了呀,理论上深搜都可以运用数据结构的栈来模拟计算机内部的压栈操作.但这里 ...

  7. 八皇后 Checker Challenge

    题目 : 八皇后 Checker Challenge 前言 : 深度优先搜索也是一种暴力枚举的算法,但是相较于循环枚举这种固定层数而且不能随意增减层数的枚举形式来说, DFS更具有优势,因为DFS是逐 ...

  8. 【USACO题库】1.5.4 Checker Challenge跳棋的挑战

    题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行,每列,每条对角线(包括两条主对角线的所有对角线)上都至多有一个棋子. 列号 1 2 3 4 5 6 --------- ...

  9. [USACO1.5]八皇后 Checker Challenge

    给定一个 N×N 的棋盘,请你在上面放置 N 个棋子,要求满足: 每行每列都恰好有一个棋子 每条对角线上都最多只能有一个棋子 上图给出了当 N=6 时的一种解决方案,该方案可用序列 2 4 6 1 3 ...

最新文章

  1. MVC5 + EF6 完整入门教程三
  2. 《2019人工智能发展报告》出炉:清华大学-中国工程院知识智能联合研究中心、中国人工智能学会联名发布!...
  3. PermutationImportance
  4. leetcode 233 number of digit one
  5. Egret之JSZip高级应用:压缩JS
  6. LeetCode Algorithm 811. 子域名访问计数
  7. Active Record 数据验证
  8. 【渝粤题库】国家开放大学2021春2044教育研究方法题目
  9. 电源大师课笔记 3.5
  10. 小米路由器 网站服务器地址,小米路由器设置网址
  11. 目不暇接!华为2020春季新品发布会群英荟萃
  12. 第3章 网站评价准则和色彩心理学
  13. 【第四篇】商城系统-品牌管理实现
  14. 三菱服务器绝对位置,绝对位置控制指令
  15. RK3326 8.1 otg和host切换
  16. Scala入门系列(7)-Scala之函数式编程
  17. 數據移動時發生***識別欄位其外顯值只有當使用了資料行清單且 IDENTITY_INSERT 為 ON 時才能指定...
  18. Android 文件外/内部存储的获取各种存储目录路径
  19. (附源码)ssm产品裂变管理系统 毕业设计 100953
  20. 获取不到input内自己输入的值

热门文章

  1. c语言二叉树构造与输出,C语言数据结构树状输出二叉树,谁能给详细的解释一下...
  2. golang errors 取 错误 信息_Golang 单元测试:有哪些误区和实践?
  3. Linux学习:第五章-Linux用户和用户组管理
  4. 工业炉温度计算机控制系统,热处理工业炉计算机控制系统组态王+PLC)
  5. C++ 右值引用 | 左值、右值、move、移动语义、引用限定符
  6. 剑指offer_02
  7. 《Python Cookbook 3rd》笔记(5.7):读写压缩文件
  8. 《Python Cookbook 3rd》笔记(1.9):查找两字典的相同点
  9. 悲观锁和乐观锁_面试必备之乐观锁与悲观锁
  10. qt triggered信号_Qt之网络编程UDP通信