N皇后問題アルゴリズム遡及法

2393 ワード

#include 
#include 
using namespace std;

#define N 4 //    
int sum=0;
int *x=new int[N+1];

bool place(int k)//
{
    int i;
    for(i=1; iif(x[i]==x[k] || abs(i-k)==abs(x[i]-x[k])) //                 
            return false;
    }
    return true;
}

void backtrack(int t) //
{
    int i=0;
    if(t>N)
    {
        for(i=1; i<=N; i++)
            cout<" ";
        cout<else
    {
        for(i=1; i<=N; i++)
        {
            x[t]=i; //       ,     。
            if(place(t))
                backtrack(t+1);
        }
    }
}
int main()
{
    backtrack(1);
    cout<<"  "<"  "<