码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 2553 N皇后

时间:2020-02-02 23:30:32      阅读:62      评论:0      收藏:0      [点我收藏+]

标签:std   space   n皇后   mes   line   输出   print   ace   dfs   

题目传送门

#include<bits/stdc++.h>
using namespace std;
inline int read()
{
    int x=0,k=1;char c=getchar();
    while(c<'0' || c>'9'){if(c=='-') k=0;c=getchar();}
    while(c>='0' && c<='9') x=(x<<3)+(x<<1)+(c^48),c=getchar();
    return k?x:-x;
}
int m[20],k,ans[20];
bool check(int x)
{
    for(int i=x-1;i>=1;i--) if(m[i]==m[x] || abs(m[i]-m[x])==abs(i-x)) return 0;//是否在同行或同列或同斜行 
    return 1;
}
void dfs(int x)
{
    if(x==k)//如果到了该到的数量 
    {
        ans[k]++;//当前答案加 1 
        return;
    }
    for(int i=1;i<=k;i++)//从一循环至最多皇后数 
    {
        m[x+1]=i;//标记 
        if(check(x+1)) dfs(x+1);//继续往后递归 
    }
}
int n;
int main()
{
    for(int i=1;i<=10;i++)//打表 
    {
        k=i;//将 k 赋值为 i 也就是最多皇后数 
        dfs(0);//从 0 开始递归 
    }
    while(n=read())//输入 
    {
        if(!n) break;
        printf("%d\n",ans[n]);//输出 
    }
    return 0;
}

hdu 2553 N皇后

标签:std   space   n皇后   mes   line   输出   print   ace   dfs   

原文地址:https://www.cnblogs.com/ForeverOIer/p/12254109.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!