`

n皇后

    博客分类:
  • acm
 
阅读更多

杭电 HOJ 2553 N皇后问题

#include <iostream>

#include <cmath>

using namespace std;

 

const int N = 11;

int queens[N][2];

void set_queen(int i, int n, int *tot)

{

    if (i > n)

    {

        (*tot)++;

        return;

    }

    for (int j = 1; j <= n; ++j)

    {

        int ok = 1;

        for(int q = 1; q < i; ++q)

        {

            //check same coloumn

            if (queens[q][1] == j)

            {

                ok = 0;

                break;

            }

            // check same slash

            if (abs(queens[q][0] - i) == abs(queens[q][1] - j))

            {

                ok = 0;

                break;

            }

        }

        if (ok)

        {

            queens[i][0] = i;

            queens[i][1] = j;

            set_queen(i+1, n, tot);

        }

    }

 

}

int account_nqueen(int n)

{

    int tot = 0;

    set_queen(1, n, &tot);

    return tot;

}

 

int main()

{

    int n;

int ans[11] = {0,1,0,0,2,10,4,40,92,352,724};

    while(scanf("%d", &n) != EOF && n!= 0)

    {

        printf("%d\n", ans[n]);

    }

 

    return 0;

}

 

分享到:
评论

相关推荐

    n皇后问题实验报告

    ### N皇后问题实验报告知识点解析 #### 一、实验目的及要求 本次实验的主要目的是让学生通过实际编程操作,深入理解并解决N皇后问题。实验要求包括以下几点: 1. **了解皇后相互攻击的条件**:当两个皇后位于同一...

    利用回溯法解决n皇后问题

    在这个场景中,我们关注的是“n皇后问题”。n皇后问题是在一个n×n的棋盘上放置n个皇后,要求任何两个皇后不能处于同一行、同一列或同一对角线上。** **C++是实现这一算法的理想选择,它是一种静态类型的、编译式的...

    N皇后问题摆法算法描述

    N皇后问题是一个经典的计算机科学问题,它源自国际象棋,目标是在一个N×N的棋盘上摆放N个皇后,使得任何两个皇后都无法通过同一行、同一列或同一对角线互相攻击。这个问题展示了如何利用回溯算法或者深度优先搜索...

    MFC实现n皇后算法(附报告)

    在本项目中,我们主要探讨的是“MFC实现n皇后算法”,这是一个经典的计算机科学问题,源自于著名的八皇后问题。八皇后问题要求在8×8的棋盘上摆放8个皇后,使得任意两个皇后都无法在同一行、同一列或对角线上相互...

    算法设计与分析 回溯法 n皇后问题

    在本例中,我们关注的是一个经典的计算机科学问题——n皇后问题。n皇后问题是一个在n×n棋盘上放置n个皇后,使得皇后之间不能互相攻击的问题。这里的“攻击”指的是皇后可以沿着行、列或对角线攻击到其他皇后。 n...

    用栈的n皇后问题源码+流程图

    **n皇后问题**是计算机科学中的一个经典问题,它的目标是在一个n×n的棋盘上放置n个皇后,使得任何两个皇后都不会在同一行、同一列或同一对角线上相互攻击。这个问题通常用来演示回溯算法和深度优先搜索(DFS)在...

    n 皇后问题n 皇后 回溯法n 皇后 回溯法

    根据给定的信息,本文将详细解释“N皇后问题”及其回溯法求解方案。 ### N皇后问题概述 N皇后问题是指在一个N×N的棋盘上放置N个皇后,使得任意两个皇后都不会互相攻击(即任何两个皇后不能位于同一行、同一列或...

    n皇后问题(队列分支限界法)

    n皇后问题是一个经典的计算机科学问题,它在棋盘上放置n个皇后,要求任何两个皇后不能在同一行、同一列或同一斜线上。这个问题是回溯算法和分支限界法的良好应用实例,旨在展示如何在有限的搜索空间中找到所有可能的...

    用栈求解n皇后问题 ,经典的回溯算法问题

    n 皇后问题是一道经典的回溯算法问题,其目标是在一个 � × � n×n 的棋盘上放置 � n 个皇后,使得任意两个皇后都不能在同一行、同一列或同一斜线上。 栈可以用来辅助实现回溯算法,本质上就是手动维护了递归...

    数据结构C语言的n皇后算法

    该算法解决了 N 皇后问题,即在 N×N 格的国际象棋上摆放 N 个皇后,使其不能互相攻击的摆法问题。该算法的优化设计是通过对 C 语言的知识进行分析和改进,提高程序的运行效率。 关键词:C 语言、回溯、递归 1. ...

    算法分析与设计实验五 N皇后-实验报告.docx

    《算法分析与设计实验五 N皇后》实验报告主要围绕N皇后问题展开,旨在让学生掌握回溯递归算法和迭代算法的设计与实现,并通过N皇后问题的实际解决,理解回溯法的核心思想。N皇后问题是一个经典的计算机科学问题,...

    CSP最小冲突法解决n皇后问题

    **CSP最小冲突法解决n皇后问题** 在计算机科学领域,**CSP(Constraint Satisfaction Problem,约束满足问题)**是一种常见的问题求解框架,用于处理一系列条件或限制下的变量分配问题。n皇后问题是一个经典的CSP...

    回溯算法n皇后问题

    回溯算法是一种基于深度优先搜索的算法,常用于解决复杂问题的求解,例如N皇后问题。N皇后问题是在一个N×N的棋盘上放置N个皇后,要求任何两个皇后不能处于同一行、同一列或同一斜线上,找出所有可行的解决方案。此...

    黑板风格,管道风格,调用返回风格,回溯法等解决N皇后问题

    在编程领域,解决复杂问题的方法多种多样,其中“N皇后问题”是一个经典的示例,它展示了不同的编程策略和设计模式。本篇文章将深入探讨“黑板风格”、“管道风格”、“调用返回风格”以及“回溯法”这四种方法在...

    C语言解决n皇后问题 例如八皇后问题 列出所有解的情况

    **C语言解决n皇后问题详解** n皇后问题是一个经典的回溯法问题,它涉及到在n×n的棋盘上放置n个皇后,使得任意两个皇后都不能在同一行、同一列或同一对角线上。以八皇后问题为例,即在8×8的棋盘上放置8个皇后,找...

    N皇后问题C++代码

    N皇后问题C++代码 N皇后问题是计算机科学中的一种经典问题,旨在在N*N的棋盘上摆放N个皇后,使得每个皇后不在同一行、同一列或同一对角线上。下面是使用C++语言实现的N皇后问题的解决方案。 类的设计 在解决N皇后...

    n皇后问题C++源码

    n皇后问题C++源码。{典型的8皇后问题的扩展)

    N皇后随机算法

    《N皇后问题与随机算法解析》 在计算机科学领域,N皇后问题是一个经典的回溯算法应用实例,它源自19世纪的数学家欧拉提出的一个挑战。问题的设定是在一个N×N的棋盘上放置N个皇后,要求任意两个皇后不能处于同一行...

Global site tag (gtag.js) - Google Analytics