N皇后问题(数组栈 和 回溯)

题意

给定n*n大小棋盘,皇后可以吃掉同行列斜线上的其他棋子。求棋子间不重复的摆法

源代码(数组栈

#include 
using namespace std;
long long stack[30],top,a[30],n,sum;
int check(long long k,long long p) //返回k行p列放置皇后是否冲突
{
    for (int i=1;i>n;
    top=1;
    sum=0;
    while (!stack[0]) //第一行尝试结束,stack0 会递增,于是不达成条件退出循环
    {
        if (top>n) { //top代表将要摆放第几行的棋子,大于n即是有解
            cout<<"find out:-------------"<n) { //大于n的话这行尝试结束,返回上行。
            stack[top]=0;
            top--;
            continue;
        } else { //往下一层尝试
            a[stack[top]]=1;
            top++;
            stack[top]=0;
        }
    }
    cout<

源代码(回溯)

#include 
using namespace std;

int a[15],b[15],n,sum;

void find(int k) //K为试探的第几行
{
    if (k>n) //k>n就是找到一个结果
    {
        sum++;
        return ;
    }
    int used; //用来判断是哦夫和斜线重合的变量
    for (int i=1;i<=n;i++)
    if (!b[i]) { //列不冲突
        used=1;
        for (int j=1;j>n;
    find(1);
    cout<

你可能感兴趣的:(N皇后问题(数组栈 和 回溯))