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

C语言实现各大皇后问题

2014-08-20 11:11 204 查看
#include <iostream>

using namespace std;

//皇后问题求解方案

#define Max 9

int a[Max]={0};

int f=0;

void put(int k,int n)

{

int i=0,j=0,u=0;

if(k<=n)

{

for(i=1;i<=n;++i)

{

a[k] = i;

for (j=1;j<=k-1;j++) //探索已经填充号的皇后位置

{

if(a[k]==a[j] || abs(a[k]-a[j])==k-j) //判断这个皇后是否与之前的皇后在一列,或者对角线上

{

u=1;

break;

}

else

{

u=0;

}

}

if(u==0)

{

if(k==n)

{

f++;

for (j=1;j<=n;j++)

{

printf("%d ",a[j]);

}

printf("\n");

}

else

{

put(k+1,n);

}

}

}

}

}

void main()

{

put(1,Max-1);

printf("sum is %d\n",f);

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