永发信息网

有用C写的 含有putchess函数的八皇后问题的程序? 带注释的

答案:1  悬赏:0  手机版
解决时间 2021-02-26 13:24
有用C写的 含有putchess函数的八皇后问题的程序? 带注释的
最佳答案
提示:在国际象棋上放置皇后时,任何一个皇后的水平、竖直和斜45º都不能有另一个皇后。解决该问题采用逐次试探的方法,即采用递归调用putchess函数的方法。首先将第一个皇后放于第一行第一列,然后开始向下一行递归。每一步递归中,首先检测待放置位置是否与已放置的皇后冲突,如不冲突,则进行下一行的放置,否则,选择该行的下一个位置进行检测。如整行的位置都冲突,则回到上一行,重新选择位置
#include
#include
#define MAX 8 //棋子数及棋盘大小MAXxMAX
int result[MAX],count=0;
int chess_cross(int n)//判断是否可放置
{
int i;
for(i=0;i {
if(result[i] == result[n] || n-i == abs(result[n] - result[i]))//斜率等于1
return 1;
}
return 0;
}
void show_result()//打印符合要求的组合
{
int i;
for(i=0;i printf("(%d,%d)",i,result[i]);
printf("\n");
count++;
}
void put_chess(int n)//放置棋子到棋盘上
{
int i;
for(i=0;i {
result[n] = i;
if(!chess_cross(n))//有没有符合要求的
{
if(n == MAX -1)
show_result();
else
put_chess(n+1);
}
}
}
int main()
{
put_chess(0);
printf("一共有%d种可能!\n",count);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
网络差英文怎么说
牙根痒是怎么回事
合肥浙商城地址有知道的么?有点事想过去
照顾爷爷的作文
将1~9分别填入九个圆圈中,使下面三个算式成立
移动部署fdd使用哪个频段好,优缺点
烟台桃村到河南宝丰的火车有几趟
贵阳市干部培训中心在哪里啊,我有事要去这个
虞景园怎么样?好不好?值不值得买?
2019年初中同步学习目标与检测七年级生物上册
我是女方如果我的儿子有了孩子管我的妈妈叫什
平板电脑屏幕总是有被遮挡的提示
小博士国学双语幼儿园在哪里啊,我有事要去这
在联通买的iPhone出国可以使用吗
明胶和鱼皮胶成分上有什么不同?健康方面哪个
推荐资讯
杰·卡斯地址在哪,我要去那里办事
班级常规管理的基本内容和要求是什么?
教练技术的四个环节是()。
马拉车的力和车拉马的力大小是相等的.为什么
东方真皮鞋店地址在什么地方,想过去办事
已知丨x丨等于5,丨y丨=8,且丨x-y丨=y-x,求x+y
价值工程的含义
武进市恒丰金属制品厂我想知道这个在什么地方
岳阳楼区岳阳洞庭鱼馆哪位知道具体地址啊
现在星期五内地更新的综艺节目 比如奔跑吧兄
lol全输出瑞文最高输出是多少
江苏省海门市大港路八号海门港交警中队(地址
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?