您的位置:首页 > 编程语言 > C语言/C++

C++ 解决8皇后问题

2011-11-17 01:59 197 查看
自己编写的程序。以供以后参考。

#include <iostream>

#include <string>

#include<math.h>

#include<list>

#include<stack>

using namespace std;

#define QUEEN 8

int a[QUEEN][QUEEN];

int  sum=0;

void initial(int a[QUEEN][QUEEN])

{

for(int i=0;i<QUEEN;i++)

    {

        for(int j=0;j<QUEEN;j++)

        {

            a[i][j]=0;

        }

        

    }

}

bool check(int a[QUEEN][QUEEN],int row, int column)

{

    for(int i=0;i<row;i++)

    {

        for(int j=0;j<QUEEN;j++)

        {

            if(a[i][column]==1||a[i][j]==1&&abs(i-row)==abs(j-column))

                return false;

        }

        

    }

    return true;

}

void print(int a[QUEEN][QUEEN], int number)

{

    sum++;

    cout<<"**************************"<<endl;

    for(int i=0;i<number;i++)

    {

        for(int j=0;j<number;j++)

        {

            cout<<a[i][j]<<" ";

        }

        cout<<endl;

    }

    cout<<"**************************"<<endl;

    

}

void queen(int n)

{

    if(n==QUEEN)

        print(a,8);

    else

    {

        for(int i=0;i<QUEEN;i++)

        {

            a
[i]=1;

            if(check(a,n,i))

            {

                queen(n+1);

            }

                a
[i]=0;

            

        }

    }

    

}

void main()

{

    initial(a);

    queen(0);

    cout<<sum;

    system("pause");

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ system