求解八皇后问题的c语言程序实现

这是我不久前给别人写的代码;

八皇后问题有92个解决方案。

下面的代码就是解决方案:对于一个固定的皇后位置,输出所有可能的情况。

如果这个不适合你的回答,可以稍微改一下~ ~

代码如下:

#包含“stdio.h”

布尔板[8][8]= { 0 };

int num = 0;//满足的条件数

int inix,iniy//输入一个皇后的初始位置。

void eoput()//输出

{

int i,j;

for(I = 0;我& lt8;i++)

{

for(j = 0;j & lt8;j++)

{

如果(!board[I][j])printf(“■”);

else printf("◆");

}

printf(" \ n ");

}

num++;

printf(" \ n \ n ");

返回;

}

Bool check(int x,int y) //判断是否可以放。

{

int i,j;

for(I = 0;我& lt8 ;i++)

{

if(board[i][y]==1)返回false

}

for(I = 0;我& lt8;i++)

{

if(board[x][i]==1)返回false

}

I = x;j = y;

while(I & gt;0 & amp& ampj & gt0){ I-;j-;}

for(;我& lt8 & amp& ampj & lt8 ;i++,j++)

if(board[i][j]==1)返回false

I = x;j = y;

while(I & gt;0 & amp& ampj & lt7){ I-;j++;}

for(;我& lt8 & amp& ampj & gt=0 ;i++,j -)

if(board[i][j]==1)返回false

返回true

}

Void search(int x,int num) //搜索函数

{

int I;

if(num & gt;= 8){ output();返回;}

if(x==inix-1)搜索(inix,num+1);

其他

{

for(I = 0;我& lt8;i++)

{

if(check(x,I))

{

板[x][I]= 1;

搜索(x+1,num+1);

board[x][I]= 0;

}

}

}

返回;

}

int main()

{

scanf("%d %d ",& ampinix & amp;iniy);

板[inix-1][iniy-1]= 1;

搜索(0,0);

printf("%d\n ",num);

返回0;

}

例如:

输入:1 1

输出:

◆ ■ ■ ■ ■ ■ ■ ■

■ ■ ■ ■ ◆ ■ ■ ■

■ ■ ■ ■ ■ ■ ■ ◆

■ ■ ■ ■ ■ ◆ ■ ■

■ ■ ◆ ■ ■ ■ ■ ■

■ ■ ■ ■ ■ ■ ◆ ■

■ ◆ ■ ■ ■ ■ ■ ■

■ ■ ■ ◆ ■ ■ ■ ■

◆ ■ ■ ■ ■ ■ ■ ■

■ ■ ■ ■ ■ ◆ ■ ■

■ ■ ■ ■ ■ ■ ■ ◆

■ ■ ◆ ■ ■ ■ ■ ■

■ ■ ■ ■ ■ ■ ◆ ■

■ ■ ■ ◆ ■ ■ ■ ■

■ ◆ ■ ■ ■ ■ ■ ■

■ ■ ■ ■ ◆ ■ ■ ■

◆ ■ ■ ■ ■ ■ ■ ■

■ ■ ■ ■ ■ ■ ◆ ■

■ ■ ■ ◆ ■ ■ ■ ■

■ ■ ■ ■ ■ ◆ ■ ■

■ ■ ■ ■ ■ ■ ■ ◆

■ ◆ ■ ■ ■ ■ ■ ■

■ ■ ■ ■ ◆ ■ ■ ■

■ ■ ◆ ■ ■ ■ ■ ■

◆ ■ ■ ■ ■ ■ ■ ■

■ ■ ■ ■ ■ ■ ◆ ■

■ ■ ■ ■ ◆ ■ ■ ■

■ ■ ■ ■ ■ ■ ■ ◆

■ ◆ ■ ■ ■ ■ ■ ■

■ ■ ■ ◆ ■ ■ ■ ■

■ ■ ■ ■ ■ ◆ ■ ■

■ ■ ◆ ■ ■ ■ ■ ■