zoukankan      html  css  js  c++  java
  • 八皇后

    小学生兼职。

    #include<stdio.h>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int tot,c[1000],vis[3][1000],n;
    void search(int cur)//枚举第cur列的皇后的位置,一共有n列 
    {
        if(cur==n+1)//如果是枚举第n+1列皇后的位置,说明已经枚举了n列皇后的位置,而且彼此的位置相互不冲突。 
            tot++;
        else
        for(int i=1;i<=n;i++)
        {
            //vis[0][i]用来记录第i行是否已经有一个皇后了,vis[0][i]=1表示第i行已经有一个皇后,vis[0][i]=0表示第i行没有皇后
            //vis[1][cur+i]用来判断副对角线是否已经有皇后了
            //vis[2][cur-i+n]用来判断主对角线是否已经有皇后了 
            if(!vis[0][i]&&!vis[1][cur+i]&&!vis[2][cur-i+n])
            {
                c[cur]=i;
                vis[0][i]=vis[1][cur+i]=vis[2][cur-i+n]=1;
                search(cur+1);
                vis[0][i]=vis[1][cur+i]=vis[2][cur-i+n]=0;
            }
        }
    }
    int main()
    {
        cin >> n;
        memset(c,0,sizeof(c));
        memset(vis,0,sizeof(vis));
        search(1);
        cout << tot;
        return 0;
    }
  • 相关阅读:
    笔记2-斐波那契数列
    笔记1-排序
    C++ 顶层const和底层const ?
    C++指针常量与常量指针的区别?
    C++指针和引用的区别?
    函数指针, 指针函数?
    手机横竖屏问题
    Swift
    Swift 渐变色
    Swift guard 关键字
  • 原文地址:https://www.cnblogs.com/zuimeiyujianni/p/9288445.html
Copyright © 2011-2022 走看看