用c语言解决八皇后问题,要求第一个皇后位置用键盘输入,需要详细代码和解释,谢谢、 5
1个回答
展开全部
#include "stdio.h"
#include "math.h"
int row[8];
void arrange(int k)
{
int i,j;
if(k>8){
for(i = 1;i<=8;i++)
printf("%2d\n",row[i]);//k>8时应该输出各列皇后的行号
return ;
}
for(j = 1;j <=8;j++) //试探第k列的每一个行号
{
for(i = 1;i <k ;i++)
if(row [i] == j || (k-i) == abs(row[i] - j))
break;
if(i>=k) //成立说明第k列的第j行可用,则放置一个皇后
{
row [k] = j;
arrange(k+1); //安排第k+1列至第八列皇后
}
}
}
void main()
{
arrange(1);
}
这是全部八皇后的可能性的代码,其中主要算法以及有了,相信你可以自己改出来的,否则直接给你的话就没有意义了。。。
声明,这段代码摘自西南交大《c程序设计教程》。。。
#include "math.h"
int row[8];
void arrange(int k)
{
int i,j;
if(k>8){
for(i = 1;i<=8;i++)
printf("%2d\n",row[i]);//k>8时应该输出各列皇后的行号
return ;
}
for(j = 1;j <=8;j++) //试探第k列的每一个行号
{
for(i = 1;i <k ;i++)
if(row [i] == j || (k-i) == abs(row[i] - j))
break;
if(i>=k) //成立说明第k列的第j行可用,则放置一个皇后
{
row [k] = j;
arrange(k+1); //安排第k+1列至第八列皇后
}
}
}
void main()
{
arrange(1);
}
这是全部八皇后的可能性的代码,其中主要算法以及有了,相信你可以自己改出来的,否则直接给你的话就没有意义了。。。
声明,这段代码摘自西南交大《c程序设计教程》。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询