- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
n皇后问题的随机解法代码实现【DOC精选】
n皇后问题的随机解法实验要求:运用随机算法和回溯法对皇后问题进行求解。先用随机算法预先对一部分皇后随机出其位置,对剩余的皇后,用回溯法求才出合理的位置。实验步骤:定义初始标记。int *s=new int[n+1];用随机算法求出一部分皇后的位置时,用s进行标记,s[i]=1表示第i个皇后的位置已经确定。Int *x=new int[n+1]; x[i]表示第i个皇后的位置验证皇后的位置是否可行函数(利用标记x),函数代码如下bool place(int x[],int k,int n){int i;for(i=1;i=n;i++)if(x[i]!=0i!=k)if(x[i]==x[k]||abs(x[i]-x[k])==abs(i-k))return false;return true;}随机算法过程。在用户输入皇后个数后,用户可自定义那些皇后先进行定位,也可以停止随机过程,进入到回溯过程。回溯法,(这时要考虑一部分的皇后已确定位置,利用s标记)用print函数输出可行的皇后位置图。代码实现:#include iostream#include ctime#include cstdlib#include math.husing namespace std;bool place(int x[],int k,int n) //判别皇后位置是否可行{int i;for(i=1;i=n;i++)if(x[i]!=0i!=k)if(x[i]==x[k]||abs(x[i]-x[k])==abs(i-k))return false;return true;}void print(int x[],int n) //以矩阵的形式输出皇后的位置图{int i,j;int **xx=new int *[n+1];for(i=1;i=n;i++)xx[i]=new int[n+1];for(i=1;i=n;i++)for(j=1;j=n;j++){xx[i][j]=0;if(j==x[i])xx[i][j]=1;}for(i=1;i=n;i++){cout\n;for(j=1;j=n;j++){coutxx[i][j] ;}}cout\n;}/*****************************************************************************/void queen(int n,int x[],int s[]) //回溯法过程{bool T=true;int i,k=1;for(i=1;i=n;i++)if(s[i]==0) break;k=i;while(k=i){x[k]++;while(x[k]=n){if(place(x,k,n))if(k==n) {print(x,n);T=false;break;x[k]++;}else {do{k++;}while(s[k]==1);x[k]=1;}else x[k]++;}if(T==false)break;x[k]=0;do{k--;}while(s[k]==1);}if(ki)cout回溯法后找不到可行的皇后位置;}/***************************************************************************************/int main(){int n,n0,i; //n0 是每次皇后定位的随机次数cout请输入皇后的数目:;cinn;cout皇后数目为n\n\n;int *x=new int[n+1];for(i=1;i=n;i++)x[i]=0;int *s=new int[n+1];for(i=1;i=n;i++)s[i]=0; //s为随机时固定的皇后标记,当其值为1时表示为改皇后已固定位置,在回溯法在要相应跳过//随机过程cout随机过程:\n;int k=1;int r;bool T;while(k) //是否结束随机过程,当输入k值为0时停止随机法{cout请输入随机第几个皇后:;cink;n0=1;while(n050){srand(time(0)+n0);r=rand()%n+1;//随机产生1到n的数x[k]=r;if(place(x,k,n)) //判断随机的位置时否可行{cout 找到第k个皇后的位置为: r\n;s[k]=1; //可行,讲s[i]的值设为1T=true;for(i=1;i=n;i++)if(s[i]!=1) T=false;if(T)print(x,n);//找到可行的解break;}n0++;}if(n0==50){x[k]=0;cout找不到第k个皇后的位置;}cout是
您可能关注的文档
- NICO-Design【DOC精选】.doc
- NIIT_MMS习题与解答【DOC精选】.doc
- NIPPE POWERBIND 底漆(多能)【DOC精选】.doc
- NIEH软件工程师客观试题(第套)9【DOC精选】.doc
- NIT考试辅导【DOC精选】.doc
- NOI6解题报告【DOC精选】.doc
- NISSAN发动机简介【DOC精选】.doc
- noi9第二十六届全国信息学奥林匹克竞赛A【DOC精选】.doc
- noip信息竞赛个基本算法【DOC精选】.doc
- noip复赛 春季第二课【DOC精选】.doc
- 3.6 光合作用 第2课时 课件 浙教版八年级科学下册.pptx
- 2026版高三一轮总复习(数学)第二章 第5课时 幂函数与二次函数 课件.pptx
- 2026版高三一轮总复习(数学)第四章 第4课时 简单的三角恒等变换 课件.pptx
- 人教版必修第三册 Unit 4 Space Exploration Reading for Writing 课件.pptx
- 人教版中考物理复习第六章质量与密度第一课时质量及其测量物质的物理属性新材料及其应用课件.pptx
- 《壶口瀑布》课件 部编版语文八年级下册.pptx
- 2024年浙江省宁波市宁海县桃源街道招聘社区工作者真题带答案详解.docx
- 2024年河南省驻马店市平舆县老王岗乡招聘社区工作者真题及参考答案详解.docx
- 2024年海南省省属虚拟市保亭黎族苗族自治县三道镇招聘社区工作者真题及参考答案详解一套.docx
- 2024年河南省驻马店市泌阳县马谷田镇招聘社区工作者真题及完整答案详解1套.docx
最近下载
- 物资管理知识题库-填空题.doc VIP
- Yamaha 雅马哈 乐器音响 PSR-SX600 Owner's Manual (Traditional Chinese) 用户手册.pdf
- 2025年危险性较大工程项目领导带班制度.pdf VIP
- 安徽工程大学【个人简历】简单风格四页精美套装简历-简历模板.docx VIP
- 2024年其他类-化验员-水质化验员考试历年常考点试题带答案.docx VIP
- 中国粮油公司年度经营计划.ppt VIP
- 2024年其他类-化验员-水质化验员考试历年常考点试题带答案.docx VIP
- 2024年其他类-化验员-水质化验员考试历年常考点试题带答案版.docx VIP
- 株洲湘江四桥42米现浇箱梁贝雷支架施工技术方案.doc VIP
- GB50312-2016 综合布线系统工程验收规范.docx VIP
文档评论(0)