n皇后问题

来源:互联网 发布:淘宝直通车软件 编辑:程序博客网 时间:2024/04/29 16:26
#include <iostream>#include <cstring>using namespace std;int n, vis[3][1000], cnt = 0;int place(int cur) {    //尝试在当前行放置一个数    if(cur == n)    cnt++;  //表明已经产生了一种解法    else {        for(int i = 0; i < n; i++) {    //依次在各列摆放皇后尝试是否可行            if(!vis[0][i] && !vis[1][i + cur] && !vis[2][cur - i + n]) {                vis[0][i] = vis[1][i+cur] = vis[2][cur-i+n] = 1;                place(cur + 1);                vis[0][i] = vis[1][i+cur] = vis[2][cur-i+n] = 0; //将标志辅助数组改回来            }        }    }    return cnt;}int main(){    cin >> n;    memset(vis, 0, sizeof(vis));    int ans = place(0);     // 尝试在0行放置一个皇后    cout << ans;    return 0;}

0 0
原创粉丝点击