Problem Description
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。
你的任务是,对于给定的N,求出有多少种合法的放置方法。

 
Input
共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。
 
Output
共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。
 
Sample Input
1
8
5
0
 
Sample Output
1
92
10
搜索的题目有很多种情况
以前的模板不是全图都搜的 这次则需要全盘的dfs
简化要点 用一维数组来实现 数组的坐标表示行数 对应的元素值表示 该行放置皇后所在的列数
dfs的结束条件为全部搜索完

#include<iostream>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
using namespace  std;
long long a[100];
long long sum;
int visit(int k,int x)//行数    皇后所在的列数
{
 int i;
 for(i=1;i<k;i++)
 {

if(a[i]==x||(abs(k-i)==abs(x-a[i])))
  {
   return 0;
  }
 }
    return 1;
}
void dfs(int k,int end)//k表示行数 //  这里的dfs为到一步后  还有n步。
{
 int i;
 if(k>end)
 {
  sum++;
  return;
 }
 for(i=1;i<=end;i++)
 {
  if(visit(k,i)==1)
  {
   a[k]=i;
   dfs(k+1,end);
  }
 }
}
int main()
{
    long long sume[110],i,n;
    for(i=1;i<=10;i++)
 {
  sum=0;
  memset(a,0,sizeof(a));
  if(n==0) break;
  dfs(1,i);
  sume[i]=sum;
 }
 while(~scanf("%I64d",&n))
 {
   if(n==0) break;
   printf("%I64d\n",sume[n]);
 }
 return 0;
}

这里对应的模板就是这样

///void   DFS(int k)  //处理第k步 
{   if  (k==n)   //已经处理到第n步,到达目的状态 
               输出结果
    else   //处理第k步
          for (int i=1; i<=m; i++)  //第k步中有m种可能
          {    处理第k步
                    DFS(k+1);//进入第k+1步
          }
}

hdu 2353 n皇后问题的更多相关文章

  1. [HDU 2553]--N皇后问题(回溯)/N皇后问题的分析

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2553 N皇后问题 Time Limit: 2000/1000 MS (Java/Others)     ...

  2. hdu 2553 N皇后问题

    回溯. 一个主对角线,副对角线的技巧 //vis[0][i]表示第i列有没有皇后 vis[1][cur+i]表示副对角线 vis[2][cur-i+n]表示主对角线 #include <cstd ...

  3. hdu 2553 N皇后问题 (经典DFS)

    题目链接:点击链接 思路:用一维数组hang[num] = i,num表示第num行,i表示第i列,计算n = 1~10皇后的不同放置数量,然后打表 #include<stdio.h> # ...

  4. HDU 2553 N皇后问题(详细题解)

    这是一道深搜题目!问题的关键是在剪枝. 下面我们对问题进行分析: 1.一行只能放一个皇后,所以我们一旦确定此处可以放皇后,那么该行就只能放一个皇后,下面的就不要再搜了. 2.每一列只能放一个皇后,所以 ...

  5. HDU 2553 n皇后问题(回溯法)

     DFS Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u   Description ...

  6. HDU 2553 N皇后问题(dfs)

    N皇后问题 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description 在 ...

  7. [ An Ac a Day ^_^ ] hdu 2553 N皇后问题 搜索

    曾经想过一天一AC 坚持下来的确不容易额 (我是没坚持下来 尽量以后坚持…… 经典的N皇后问题 搜索的入门问题 学了这么久竟然一直没敲过 今天敲一下…… 这道题也不是很简单额 纯暴力就超时了 要打一下 ...

  8. hdu 2553 n皇后问题【DFS递归解法】

    <题目链接> 题目大意: Problem Description 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45 ...

  9. HDU 2553 N皇后问题(深搜DFS)

    N皇后问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

随机推荐

  1. python gtk 环境

    为Python添加GTK+库:pygtk(windows下安装pygtk) 一.下载需要的文件 昨天晚上就是所需的文件没有找全,我还以为只需要一个pygtk就够了. 1.下载pygtk需要的文件 到p ...

  2. ln bug

    /home/hdp/testcpy sudo ln -s . /usr/lib/cpy390sourcecode cpy390sourcecode -> . sudo ln -s pwd /us ...

  3. Linux下不借助工具实现远程linux服务器上传下载文件

    # Linux下不借助工具实现远程linux服务器上传下载文件 ## 简介 - Linux下自带ssh工具,可以实现远程Linux服务器的功能- Linux下自带scp工具,可以实现文件传输功能 ## ...

  4. flutter Slider滑块组件

    滑块,允许用户通过滑动滑块来从一系列值中选择. import 'package:flutter/material.dart'; class SliderDemo extends StatefulWid ...

  5. 关于TCP粘包和拆包的终极解答

    关于TCP粘包和拆包的终极解答 程序员行业有一些奇怪的错误的观点(误解),这些误解非常之流行,而且持有这些错误观点的人经常言之凿凿,打死也不相信自己有错,实在让人啼笑皆非.究其原因,还是因为这些错误观 ...

  6. 软件定义网络基础---SDN控制平面

    一:SDN控制平面 一个或多个SDN控制器组成,是网络的大脑.  对底层网络交换设备进行集中管理,状态监测.转发决策以及处理和调 度数据平面的流量:  通过北向接口向上层应用开放多个层次的可编程能 ...

  7. [导航教程] [C#基类库大全]官方产品发布与源码下载---苏飞版

    http://www.sufeinet.com/thread-655-1-1.html

  8. [ kvm ] 学习笔记 8:Ovirt 基础及使用

    目录- 1. oVirt 功能介绍- 2. oVirt 安装部署    - 2.1 基础准备    - 2.2 安装 ovirt-engine    - 2.3 配置 kvm 主机    - 2.4 ...

  9. docker进入容器内部执行命令

    [root@bogon ~]# docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 38a2cae4c32f jenk ...

  10. 09点睛Spring MVC4.1-异步请求处理(包含兼容浏览器的服务器端推送)

    转发地址:https://www.iteye.com/blog/wiselyman-2215852 9.1 异步请求处理 Servlet 3开始支持异步请求处理 Spring MVC 3.2开始支持S ...