c语言八皇后问题程序设计资料

c语言八皇后问题程序设计资料

ID:39703206

大小:151.09 KB

页数:17页

时间:2019-07-09

c语言八皇后问题程序设计资料_第1页
c语言八皇后问题程序设计资料_第2页
c语言八皇后问题程序设计资料_第3页
c语言八皇后问题程序设计资料_第4页
c语言八皇后问题程序设计资料_第5页
资源描述:

《c语言八皇后问题程序设计资料》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、2014年春季学期《C项目设计》报告题目:八皇后问题学号:092213112姓名:刘泽中组名:1指导教师:宋东兴日期:2014.05.15目录正文31.问题描述32.总体设计与分析33.相关代码54.调试分析95.软件使用说明书11总结11附录:部分原程序代码12一、问题描述1.八皇后问题:是一个古老而著名的问题。该问题是十九世纪著名的数学家高斯1850年提出:在8×8棋盘上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法?2.解决八皇后问题的关键在于:(

2、1)找到合理的数据结构存放棋子的摆放位置。(2)要有合理的冲突检查算法。采用的方法是,先把8个棋子摆在棋盘上,每行摆一个,然后去检查这种摆放是否有冲突,如果没有冲突,即找到了一种解决方案。由于皇后的摆放位置不能通过某种公式来确定,因此对于每个皇后的摆放位置都要进行试探和纠正,这就是“回溯”的思想。在8个皇后未放置完成前,每行摆放一个皇后,摆放第i个皇后和第i+1个皇后的试探方法是相同的,因此完全可以采用递归的方法来处理。二、总体设计与分析1.设计效果画一个8*8的国际象棋盘,在棋盘某一位置上放一棋子,并让

3、它按从左到右的方向自动运动,用户可以使用光标键调整棋子运动的方向,找出所有可能的摆放方案,将包含指定的棋子的(如3行4列)摆放方案找出并显示出来。。2.、总体设计程序总体分为两大块:(1)八皇后摆法的寻找;(2)棋盘及棋子的设计。3、详细模块(1)八皇后摆法的寻找:intchess[8][8]={0};//二维数组表示8*8棋盘,全部清0,(0代表该位没有放棋子)voidqueen(inti,intn){//i表示从第i行起为后续棋子选择合适位置,n代表n*n棋盘if(i==n)output(n);//输

4、出棋盘当前布局;else{for(j=0;j

5、(chess[m][n]==1){if(m==i

6、

7、n==j)return1;if(m+n==i+j

8、

9、m-n==i-j)return1;}}}return0;}voidoutput(){//输出一组解,即打印出8个皇后的坐标for(inti=0;i<8;i++){for(intj=0;j<8;j++){if(chess[i][j]==1){printf("(%d,%d)",i,j);}}}printf(“”);}intmain(){queen(0,8);return0;}(2)棋盘及棋子的设计:vo

10、iddrawBlock(inti,intj){//棋盘的设计(每一个小方块)intx0,y0,x1,y1;x0=ORGX+j*W;y0=ORGY+i*H;x1=x0+W-1;y1=y0+H-1;setcolor(WHITE);rectangle(x0,y0,x1,y1);setfillstyle(1,LIGHTGRAY);floodfill(x0+1,y0+1,WHITE);setcolor(WHITE);line(x0,y0,x1,y0);line(x0,y0,x0,y1);setcolor(BLACK

11、);line(x1,y0,x1,y1);line(x0,y1,x1,y1);}voiddrawBall(Ballball){//棋子的设计intx0,y0;x0=ball.startX+ball.c*ball.w+ball.w/2;y0=ball.startY+ball.r*ball.h+ball.h/2;setcolor(RED);setfillstyle(1,RED);fillellipse(x0,y0,10,10);}4.程序设计思路:先设计程序,找到八皇后的摆放位置,方法是:先把8个棋子摆在棋盘上

12、,每行摆一个,然后去检查这种摆放是否有冲突,如果没有冲突,即找到了一种解决方案。采用递归方法和“回溯”思想,找到8*8棋盘上的各种摆法,并把它打印显示出来,共92种。然后用TC进行图形编程,画出精美的棋盘,设计好棋子,从显示棋盘,显示棋子,上下左右移动棋子,一步一步,减少错误率。最后,将棋盘棋子和八皇后摆放的代码结合一起,做出可以使用光标键调整棋子运动方向,找出所有可能的摆放方案,将包含指定的棋子的(如3行4列)摆放方案找出并

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。