hdu 2553 N皇后问题(dfs)

参考:http://blog.csdn.net/helloworld10086/article/details/38487585

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2553

#include <stdio.h>

int n;
int tot;
int C[20];
int result[20];

void search(int cur)
{
    if(cur == n)
        tot++;
    else
        for(int i = 0; i <n; ++i)
        {
            int ok = 1;
            C[cur] = i;
            for(int j = 0; j < cur; ++j)
                if(C[cur] == C[j] || cur-C[cur] == j-C[j] || cur+C[cur] == j+C[j])
                {
                    ok = 0;
                    break;
                }
            if(ok)
                search(cur+1);
        }
}

int main()
{
    for(int i = 1; i <= 11 ; ++i)//一定要打表,否则会超时
    {
        n = i;
        tot = 0;
        search(0);
        result[i] = tot;
    }
    while(scanf("%d",&n) && n != 0)
        printf("%d\n",result[n]);
    return 0;
}


发布了601 篇原创文章 · 获赞 142 · 访问量 27万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览