zoukankan      html  css  js  c++  java
  • [USACO 6.5.5]Checker Challerge

    题目大意

      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
    ", 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
    ", ans);
        return 0;
    }
  • 相关阅读:
    非线性数据结构——树
    排序算法之插入排序
    web框架之environment处理
    web开发之http和wsgi
    python os模块和shutil模块
    python路径操作
    stringIO和bytesIO
    python文件操作
    设计模式
    设计模式
  • 原文地址:https://www.cnblogs.com/albert7xie/p/6343836.html
Copyright © 2011-2022 走看看