用TUROBO C 2.0编一个程序!

来源:百度知道 编辑:UC知道 时间:2024/06/13 05:35:48
八皇后问题求解
在8*8格的国际象棋棋盘上摆放8个皇后,使其不能互相攻击,即任意2个皇后都不能处于同一行、同一列或同一斜线上。用程序求解全部摆法。
基本要求:
a. 给出可能的摆法数量;
b. 显示全部摆法。
提高部分:
a. 屏幕输出程序求解过程。

#include <malloc.h>
#include <stdio.h>
main()
{
queens(8);
getch();
}
int place(int k,int *x)
{
int i;
for(i=1;i<k;i++)
{
if(x[i-1]==x[k-1]||x[i-1]-x[k-1]==i-k||x[i-1]-x[k-1]==k-i)
{
return -1;
}
}
return 1;
}
int queens(int n)
{
int *x,i,k,cs;
x=malloc(n+n);
cs=0;
x[0]=0;
k=1;while(k>0)
{
do
{
x[k-1]=x[k-1]+1;
}while(x[k-1]<=n&&place(k,x)<0);
if(x[k-1]<=n)
{
if(k==n)
{
cs++;
printf("\ns.%3d:",cs);
for(i=0;i<n;i++)
{
printf("%2d",x[i]);
}
}
else
{
k=k+1;
x[k-1]=0;
}
}
else
{