欢迎来到天天文库
浏览记录
ID:42667192
大小:186.50 KB
页数:13页
时间:2019-09-19
《约瑟夫问题和八皇后问题求解》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《数据结构》课程设计实验报告题目约瑟夫问题和八皇后问题求解学院专业班级学号学生姓名同组成员指导教师编写日期2010年7月16日目录一、问题描述1二、问题分析1三、数据结构描述2四、算法设计2五、详细程序清单5六、程序运行结果9七、心得体会11八、参考资料11一、问题描述1、约瑟夫问题描述编号为1,2…n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数,报m的人出列,将他的密码作为新的m值,从他的顺时针方向上的下一个开始
2、重新从1报数,如此下去,直至所有人全部出列为止,设计一个程序求出出列顺序。2、八皇后问题描述在一个8×8的棋盘里放置8个皇后,要求每个皇后两两之间不相"冲"(在每一横列竖列斜列只有一个皇后)。设计程序输出所有可能的解。3、界面设计模块问题描述设计一个菜单式界面,让用户可以选择要解决的问题,同时可以退出程序。界面要求简洁明了,大方得体,便于用户的使用,同时,对于用户的错误选择可以进行有效的处理。二、问题分析本人负责的是为用户设计菜单界面,使用户可以根据菜单进行选择其中的某个问题进行处理。对于一个菜单界面,首先要求界面简单明了,使
3、得用户可以轻松通过界面知道如何获取自己想要的操作。其次,我们不能保证用户每次的选择都是有效的,即用户的选择是在我们提供的服务范围之内,所以要设计容错操作,即当用户的选择超出我们提供的范围时,提示用户重新选择。最后,要保证用户选择相应的操作后,程序能正确的按照用户的选择运行下去,完成用户的要求。并且有退出功能。11三、数据结构描述1、intchoice;//记录用户的选择,然后选择相应的操作。2、typedefstructLNode{intdata;intcode;structLNode*next}node,*linklist;
4、//约瑟夫环问题单链表结构。3、inta[8];//棋盘列状态intb[15];//棋盘主对角线状态intc[15];//棋盘从对角线状态intd[8][8];//存放棋盘11四、算法设计1.程序功能模块图主菜单Exit(0)退出Leaveposition()将前一次放置的棋子移走TakePosition()如无冲突,就占据一个棋格Check()判断一个点是否能放棋子Show()输出整个棋盘结果Queenstart()棋盘初始化Putchess()进入递归函数Creatstart()创建单循环链表建立主函数lianbiao()
5、并输入人数Chulie()在单循环链表中出列八皇后问题约瑟夫问题2.算法设计/*----------------------------主菜单----------------------------*/voidmenu(){printf("欢迎登入");printf("**************************************************");printf("1.约瑟夫环问题*");printf("2.八皇后问题运果*");printf("3.退出*");printf("***
6、*************************************************");}11/*----------------------------Main:主函数。----------------------------*/voidmain(){intchoice;menu();printf("请选择:");scanf("%d",&choice);while(choice){switch(choice){case1:lianbiao();getch();break;case2:Queenstart(
7、);putchess(1);getch();break;case3:exit(0);default:printf("选择无效,请重新选择!");getch();break;}menu();printf("请选择:");scanf("%d",&choice);}}11五、详细程序清单#include#include#include//八皇后问题intcount;intm,n;inta[8];intb[15];intc[15];intd[8][8];intcheck(inti
8、,intj);voidputchess(inti);voidtakeposition(inti,intj);voidleaveposition(inti,intj);voidshow(void);voidQueenstart(void){count=0;for(m=0;m<8
此文档下载收益归作者所有