C语言课件 第25 26章.ppt
《C语言课件 第25 26章.ppt》由会员分享,可在线阅读,更多相关《C语言课件 第25 26章.ppt(30页珍藏版)》请在三一办公上搜索。
1、第25章八皇后问题的实现,问题描述 问题分析及实现 开发过程常见问题及解决,第25章八皇后问题的实现,问题描述 问题分析及实现 开发过程常见问题及解决,第25章八皇后问题的实现,问题描述 问题分析及实现 开发过程常见问题及解决,第25章八皇后问题的实现,问题描述 问题分析及实现 开发过程常见问题及解决,八皇后问题的实现,国际象棋中,“皇后”在横、竖、两个方向的对角线上都可以吃对方的棋子。如果一个棋盘上有八个皇后,那么如何放置才可以相互不能攻击呢?又有多少种放置方案呢?本章就通过C语言来实现此算法。,25.1 问题描述,八皇后问题是一个古老而著名的问题,是回溯算法的典型例题。该问题是19世纪著名
2、的数学家高斯1850年提出:在88格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。,25.2 问题分析及实现,25.2.1 问题分析25.2.2 问题实现25.2.3 程序运行,25.2 问题分析及实现,对于此问题,首先想到的前面提到的要领:看清、想明、把握每一个细节。由问题描述可知,我们要实现的是找到皇后的行列坐标以及对应方案号即可。,25.2.1 问题分析,我们将要开发的程序,就是设置一个棋盘(NN,N=8),并设置此棋盘上所有点均是空的。然后一种情况一种情况地试验,遇到与问题的要求相匹配的情况时,方案数累加1,并输出这种情
3、况。,25.2.2 问题实现,通过分析,我们得出此问题实现的2个要点:第一个是在哪种情况下,我们可以认为是与问题的要求一致;第二个是怎么划分模块。问题实现的代码如下。1.输出结果将结果输出至屏幕,以循环打印的方式,调用标准输入输出函数printf,将结果回显,代码如下(代码25-1.txt)。,25.2.2 问题实现,01#include 02#define N 803 void Output(int bcN,int*count)04 05 int i;06 int j;07*count=*count+1;08 printf(第%d种:n,*count);09 for(i=0;iN;i+)10
4、 11 for(j=0;jN;j+)12 13 if(bcij)14 printf(Q);/*在皇后位置打印Q*/15 else 16 printf(0);/*在非皇后位置打印0*/17 18 printf(nr);19 20 system(Pause);/*暂停*/21,25.2.2 问题实现,2.求解每种方案是否符合题目要求我们采用递归的方法,可以很容易地将这个问题简化。就是要想让第八个皇后的情况合法,我们需要去找第七个合法的皇后位置。那么,要想让第七个皇后的位置合法,怎么办?当然是去找第六个皇后的位置,依此类推,可以推到第一个合法皇后的位置后,我们就返回调用处。代码如下(代码25-2.t
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言课件 第25 26章 语言 课件 25 26

链接地址:https://www.31ppt.com/p-2882466.html