求解八皇后问题的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
输出:
◆ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ◆ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ◆
■ ■ ■ ■ ■ ◆ ■ ■
■ ■ ◆ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ◆ ■
■ ◆ ■ ■ ■ ■ ■ ■
■ ■ ■ ◆ ■ ■ ■ ■
◆ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ◆ ■ ■
■ ■ ■ ■ ■ ■ ■ ◆
■ ■ ◆ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ◆ ■
■ ■ ■ ◆ ■ ■ ■ ■
■ ◆ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ◆ ■ ■ ■
◆ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ◆ ■
■ ■ ■ ◆ ■ ■ ■ ■
■ ■ ■ ■ ■ ◆ ■ ■
■ ■ ■ ■ ■ ■ ■ ◆
■ ◆ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ◆ ■ ■ ■
■ ■ ◆ ■ ■ ■ ■ ■
◆ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ◆ ■
■ ■ ■ ■ ◆ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ◆
■ ◆ ■ ■ ■ ■ ■ ■
■ ■ ■ ◆ ■ ■ ■ ■
■ ■ ■ ■ ■ ◆ ■ ■
■ ■ ◆ ■ ■ ■ ■ ■
四