北邮信通院数据结构实验二--八皇后问题实验报告(内附源代码完整版).docVIP

北邮信通院数据结构实验二--八皇后问题实验报告(内附源代码完整版).doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
北邮信通院数据结构实验二--八皇后问题实验报告(内附源代码完整版)

数据结构实验报告 实验名称: 实验二——八皇后问题 学生姓名: 班 级: 班内序号: 学 号: 日 期: 2014年11月27日 实验要求 【实验目的】 进一步掌握指针、模板类、异常处理的使用 掌握栈的操作的实现方法 掌握队列的操作的实现方法 学习使用栈解决实际问题的能力 学习使用队列解决实际问题的能力 【实验内容】 利用栈结构实现八皇后问题。 八皇后问题19世纪著名的数学家高斯于1850年提出的。他的问题是:在8*8的棋盘上放置8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列、同一斜线上。请设计算法打印所有可能的摆放方法。 提示: 1、可以使用递归或非递归两种方法实现 2、实现一个关键算法:判断任意两个皇后是否在同一行、同一列和同一斜线上 2. 程序分析 2.1 存储结构 存储结构:栈(递归) 2.2 关键算法分析 ①递归调用摆放皇后 1、关键算法伪代码: (1).如果输入的row大于皇后的数量,则输出皇后的位置 (2) 否则col从0开始递增 (3) 检测(row,col)上的点是否符合条件,不符合则col自增,符合则转到下一个皇后的排列 2、代码详细分析: void SeqStack::PlaceQueen(int row) //摆放皇后 { for (int col=0;col n;col++) //遍历0~7, { Push(col); if (Check()) //判断摆放皇后的位置是否合适 { if (row n-1) //若还没有放到最后一个,则进行下一个皇后的放置 PlaceQueen(row+1); else { num++; //计数器加1 Print(n); //打印成功的坐标点 } } Pop(); //若不符合条件则出栈 } } 3、计算时间复杂度:O(n2) ②判断皇后位置是否合适: 关键算法伪代码: 对于一个坐标,将前面每一个坐标均与这个坐标比较 若在同一列或在同一斜线上,则返回0, 否则j自增1,面每一个坐标与前面做比较 若与前面坐标在同一列 最后返回 代码分析: bool SeqStack::Check() { for(int i=0;itop;i++) //依次检查前面已摆放的皇后位置 if(data[top]==data[i]||(abs(data[top]-data[i]))==(top-i)) //判断是否在同一列同一斜线 return false; return true; } 时间复杂度:O(n) 2.3 其他 说明:由于输出显示时对话框有限,而程序结果比较多,占用空间大,运用输出坐标位置来表示,则可以输出全部解。 3. 程序运行结果 (1)程序框图: (2)程序代码: #include iostream using namespace std; const int m=1024; //定义栈的最大高度 int num=0; //初始化方案种类计数器 int n; //摆放的皇后个数 class SeqStack //定义顺序栈 { public: SeqStack(){top=-1;} //构造函数,初始化空栈 void Push(int x);

文档评论(0)

kabudou + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档