N皇后问题

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3464    Accepted Submission(s): 1599

Problem Description
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。
你的任务是,对于给定的N,求出有多少种合法的放置方法。
Input
共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量
Output
共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。
Sample Input
8
Sample Output
92
由于棋盘的每列只有一个皇后,所i可以用一维向量A(a1,a2,a3……an)来表示第i列皇后所在的行a[i],即解空间的每个结点都有n个儿子,因此解空间大小为n^n,这是一颗子集树。
约束条件是斜率和行号都不可以相等。
回溯算法解题思路:
1.针对给定的问题,定义问题的解空间(子集树还是排列树)
2.确定易于搜索的解空间结构
3.以深度优先的方法搜索解空间,并且在搜索过程中用剪枝函数避免无效搜索。
#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;#define NUM 20
int n;
int x[NUM];
int sum; inline bool Place(int t)
{ int i; for (i=1; i<t; i++) if ((abs(t-i) == abs(x[i]-x[t])) || (x[i] == x[t])) //斜率相等或者行号相等 return false; return true;
} void Backtrack(int t)
{ int i;if (t>n) {sum++;}elsefor (i=1; i<=n; i++) {x[t] = i;if (Place(t)) Backtrack(t+1);}
} int main()
{ while (cin>>n){sum = 0;Backtrack(1);printf("%d\n", sum);}return 0;
} 

N皇后问题(回溯算法解法)相关推荐

  1. n皇后问题python_N皇后问题—回溯算法经典例题

    N 皇后是回溯算法经典问题之一.问题如下:请在一个 ni n 的正方形盘面上布置 n 名皇后,因为每一名皇后都可以自上下左右斜方向攻击,所以需保证每一行.每一列和每一条斜线上都只有一名皇后. 最简单的 ...

  2. java递归-八皇后问题(回溯算法)

    1.八皇后问题介绍 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于 1848 年提出:在 8×8 格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任 ...

  3. [Leetcode][第81题][JAVA][N皇后问题][回溯算法]

    [问题描述][困难] [解答思路] 1. 主副对角线列 标记 复杂度 import java.util.ArrayDeque; import java.util.ArrayList; import j ...

  4. 51. N 皇后(回溯算法)

    n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案. 每一种解法包含一个不同的 n 皇后问 ...

  5. leetcode51. N 皇后(回溯算法)

    n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 上图为 8 皇后问题的一种解法. 给定一个整数 n,返回所有不同的 n 皇后问题的解决方案. 每一种解 ...

  6. [C语言]八皇后问题回溯算法

    八皇后问题:在8×8格的国际象棋上摆放八个皇后,任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. 将棋盘抽象为4 * 4到20 * 20大小的矩阵 输入样例: 请输入棋盘的大小(4 ...

  7. 回溯算法 | 追忆那些年曾难倒我们的八皇后问题

    文章收录在公众号:bigsai 更多精彩干货敬请关注! 前言 说起八皇后问题,它是一道回溯算法类的经典问题,也可能是我们大部分人在上数据结构或者算法课上遇到过的最难的一道题-- 第一次遇到它的时候应该 ...

  8. 八皇后时间复杂度_回溯算法 | 追忆那些年曾难倒我们的八皇后问题

    文章收录在公众号:bigsai,关注更多干货和学习资源 记得点赞.在看 前言 说起八皇后问题,它是一道回溯算法类的经典问题,也可能是我们大部分人在上数据结构或者算法课上遇到过的最难的一道题-- 在这里 ...

  9. 8皇后以及N皇后算法探究,回溯算法的JAVA实现,递归方案

    八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同 ...

  10. 8皇后以及N皇后算法探究,回溯算法的JAVA实现,递归方案(一)

    八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同 ...

最新文章

  1. java签名算法阻止 设置_java数字签名算法之RSA
  2. python最简单单例模式_Python单例模式的4种实现方法 | 学步园
  3. css 添加 referer,http中Referer和Referrer Policy
  4. java PKCS7Padding 加密Cannot find any provider supporting AES/CBC/PKCS7Padding 解决办法
  5. diffpatch升级_Tinker资源补丁原理解析
  6. mybatis 多租户saas_SaaS 微服务脚手架
  7. ArrayList非线程安全
  8. html页面的bug记录:简单记录几个编辑html页面遇到的问题
  9. 7 一阶逻辑推理(11.23,11.30)
  10. android摇骰子动画,Android实现微信摇骰子游戏
  11. 龙门浩职高计算机学校,重庆市龙门浩职业中学校|龙门浩职高是公办还是民办院校/文凭怎么样/是什么性质...
  12. 基于深度学习的CNN边缘检测RCF--Richer Convolutional Features for Edge Detection
  13. Gif动态图片怎么做?教你简单的gif合成小窍门
  14. 含有一般疑问句的歌_一般将来时详解,想学好英语必须要掌握的一个最重要语法...
  15. springcloud 加入spring session通过zuul请求session不一致问题
  16. Android获取所有App信息
  17. 51单片机 玩转按键加减切换+数码管+Proteus仿真
  18. 【codeforces】Round #269 ABCD
  19. 搭建mysql数据库脚本语言_二十二、创建数据库脚本
  20. 货币兑换问题--动态规划策略求解

热门文章

  1. HDU 2883 kebab(最大流)
  2. 如何在Eclipse配置PyDev插件
  3. Objective-C中内存管理的一些特例
  4. 文档根元素 mapper 必须匹配 DOCTYPE 根 configuration
  5. Hystrix断路器---SpringCloud(四)
  6. ubuntu下arpoison安装
  7. JavaScript学习笔记之数组(一)
  8. 视频监控市场发展潜力大 六个阻碍待突破
  9. fir.im Weekly - 从零开始创建 Android 新项目
  10. Jersey the RESTful Web Services in Java