zoukankan      html  css  js  c++  java
  • hdu2553

     

                                          N皇后问题

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


    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
     
     
    #include<iostream>
    #include<cstring>
    #include<string>
    using namespace std;
    int num[11],map[11],count,visit[11],n;
    void dfs(int num)
    {
        int i , j;
        if(num == n +1 )
        {
            ++count;
            return ;
        }
        for(i=1;i<=n;i++)
        {
            if(!visit[i])
            {
                int flag = 1;
                map[num] = i;
                for(j=1;j<num;j++)
                {
                    if(map[num]-num == map[j]- j || map[num] + num == map[j] + j)
                    {
                        flag = 0;
                        break;
                    }
                }
                if(flag)
                {
                    visit[i] = 1;
                    dfs(num+1);
                    visit[i] = 0;
                }
            }
        }
    }
    void init()
    {
        int i;
        memset(visit,0,sizeof(visit));
        memset(map,0,sizeof(map));
        for(i=1;i<=10;i++)
        {
         n= i,    count = 0,    dfs(1),    num[i] = count;
    
        }
    }
    int main()
    {
        init();
        int m;
        while(scanf("%d",&m)!=EOF && m)
        {
            printf("%d
    ",num[m]);
        }
        return 0;
    }
     
     
  • 相关阅读:
    java语言基础001
    Linux 使用硬盘
    Linux 系统运行命令 > 查看系统信息
    Linux rm 命令
    Linux 操作系统目录结构
    JavaScript || 事件基础
    My SQL随记 003 数据表基础操作语法
    My SQL随记 002 登陆
    My SQL随记 001 常用名词/结构化语言
    linux命令学习
  • 原文地址:https://www.cnblogs.com/Deng1185246160/p/3232527.html
Copyright © 2011-2022 走看看