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

[USACO 6.5.5]Checker Challerge

时间:2017-01-23 14:52:03      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:turn   n皇后   ace   n皇后问题   for   str   pac   ret   hal   

题目大意

  n皇后问题

题解

  轻微的剪枝就过了.

  HINT4不会写...

代码

/*
TASK:checker
LANG:C++
*/
#include <cstdio>
#include <cstring>

using namespace std;

bool col[15], zd[30], fd[30];
int prow[15];
int ans, n;

void dfs(int row)
{
    if (row == n)
    {
        ans++;
        if (ans <= 3)
        {
            for (int i = 0; i < n-1; ++i) printf("%d ", prow[i]);
            printf("%d\n", prow[n-1]);
        }
        return;
    }
    for (int i = 0; i < n; ++i)
        if (!col[i] && !zd[row+i] && !fd[row+n-i-1])
        {
            col[i] = zd[row+i] = fd[row+n-i-1] = true;
            prow[row] = i + 1;
            dfs(row + 1);
            col[i] = zd[row+i] = fd[row+n-i-1] = false;
        }
}

int main()
{
    freopen("checker.in", "r", stdin);
    freopen("checker.out", "w", stdout);
    scanf("%d", &n);
    memset(col, 0, sizeof(col));
    memset(zd, 0, sizeof(zd));
    memset(fd, 0, sizeof(fd));
    ans = 0;
    dfs(0);
    printf("%d\n", ans);
    return 0;
}

 

[USACO 6.5.5]Checker Challerge

标签:turn   n皇后   ace   n皇后问题   for   str   pac   ret   hal   

原文地址:http://www.cnblogs.com/albert7xie/p/6343836.html

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