版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/主要功能:用棋盘图示的方式展示n皇后经典问题的求解。/由于求解结果较多,直接写入文本文件后打开即可。/课题名称:n皇后经典问题求解软件#include #include #include #include #include const int QUEENMAXCOUNT = 40; /设置皇后的最大个数const int KINDSOFWRITEFILE = 1000; /设置保存文件排列种类最大值int queenarrayQUEENMAXCOUNT; /用于保存皇后排列信息class NQueen /构造一个NQueen类public: NQueen(); /构造函数 NQueen();
2、 /析构函数 void startruning(); /初始化函数 void finish(); /结束化函数protected: void nNQueens(int queesnumnow); /回溯法求解函数 bool place(int queesnumnow,int col); /条件判断函数 bool writefile(); /写文件函数 int kindscount; /排列种类计数器 int actualcount; /当前情况下皇后个数 clock_t starttimer, finishtimer; /开始时间结束时间;void NQueen:startruning() k
3、indscount = 0; /计数器初始化 cout请输入皇后个数(注意不大于QUEENMAXCOUNTactualcount; if(actualcount QUEENMAXCOUNT) coutendl【温馨提示】皇后个数大于QUEENMAXCOUNT,不符合要求!endl; cout= 10) /当皇后个数大于10时,运算量很大 coutendl【温馨提示】皇后个数较多,运算中,请等待.endlendl; else if(actualcount 4) coutendl【提示】actualcount皇后问题没有解!endl; cout=endl; return; /此时无解 startt
4、imer = clock(); /程序开始时间 nNQueens(0); finishtimer = clock(); /程序结束时间 finish();void NQueen:finish() double duration = (double)(finishtimer-starttimer)/CLOCKS_PER_SEC; if(actualcount11) coutendl皇后排列方式一共有kindscount种。endlendl; else coutendl皇后排列的种类太多,不便给出总数,只取其中的 KINDSOFWRITEFILE种写入文件。endlendl; coutendl【时
5、间提示】您本次操作所用时间为:; if(duration 10) coutduration 秒。endlendl; else cout(int)(duration)/60 分 (int)(duration)%60 秒。endlendl; cout运算完毕!系统将自动打开文件,请查看.endl; ShellExecute(NULL,open,n-皇后问题.txt,NULL,NULL,SW_SHOWNORMAL); cout=endl;bool NQueen:place(int queesnumnow,int col)/判断两个皇后是否在同一列或者一条斜线上 for(int row = 0;row
6、 queesnumnow;row+) if(queenarrayrow = col) | (abs(queenarrayrow-col) = abs(row-queesnumnow) return false; return true;void NQueen:nNQueens(int queesnumnow) if(kindscount KINDSOFWRITEFILE ) /控制写如文件的个数 for(int col = 0;col actualcount;col+) if(place(queesnumnow,col) queenarrayqueesnumnow = col; if(quee
7、snumnow = actualcount-1) /约束条件 kindscount+; /计数器 writefile(); /写到文件中 else nNQueens(queesnumnow+1); else return;bool NQueen:writefile() if(kindscount = 1) /当count=1时,将.txt文件清空。 ofstream out(n-皇后问题.txt); if(out) outttt actualcount皇后问题求解如下 endl; out.close(); ofstream out(n-皇后问题.txt,ios:app); if(!out) r
8、eturn false; else int colcount,rowcount,col; outendltt第【kindscount】种方式:(; for(col = 0;col actualcount-1;col+) outqueenarraycol+1,; outqueenarrayactualcount-1+1)endl; for(colcount = 0;colcount actualcount;colcount+) if(colcount=0) outtt; for(col = 1;col actualcount;col+) out; outendl; else outtt; for
9、(col = 1;col actualcount;col+) out; outendl; outtt; for(rowcount = 0;rowcount actualcount;rowcount+) if(rowcount = queenarraycolcount) out; else out ; outendl; outtt; for(col = 1;col actualcount;col+) out; outendl; out.close(); /关闭文件 return true;/class interfacebase public: NQueen NQueenonface; /定义一
10、个对象NQueenonface void clearscreen(void); void showmenu(void); void processmenu(void);void interfacebase:clearscreen(void) system(cls);void interfacebase:showmenu(void) cout=endl; cout n皇后经典问题求解软件 endl; cout=endl; cout软件功能说明: endl; cout 用n*n棋盘图示的方式展示八皇后经典问endl; cout题的求解。由于求解结果较多,直接写入文endl; cout本文件即可。
11、endl; cout=endl; cout 功能菜单 endl; cout=endl; cout 1.求解n皇后问题 endl; cout 2.退出软件 endl; cout=endl; coutmenuchoice; switch(menuchoice) /根据用户的选择进行相应的操作 case 1: NQueenonface.startruning(); /调用类成员函数 break; case 2: coutendlendl您已经成功退出本系统,欢迎再次使用!endl; system(pause); exit(0); default: cout对不起,您输入的功能编号有错!请重新输入!endl; break; void main(void) /程序主入口 system(col
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《GB-T 21410-2015石油天然气工业 井下设备 锁定心轴和定位接头》专题研究报告
- 呼吸力学监测个体化镇静方案
- 听力损失与社交障碍干预策略
- 合并骨质疏松的肾损害管理策略
- 合并糖尿病的SAP患者液体复苏策略调整
- 合并糖尿病的AKI恢复期高血压降压方案优化
- 2025年国际贸易货物运输合同
- 口腔正畸科住院医师错畸形诊断与矫治方案
- 2025年山东省环保发展集团生态有限公司及权属企业社会招聘公笔试备考试题附答案
- 2025年陕西建材科技集团股份有限公司招聘(30人)模拟试卷附答案
- 集分水器安装技术交底
- 智能家居ppt模板
- 建设规模和项目特征表
- 1389国开电大本科《管理英语4》历年期末考试试题及答案汇编(珍藏版)
- 企业供电系统及运行(第六版)完教学课件完整版电子教案
- 气动冲床设备日常点检标准作业指导书
- 固体物理第九章
- 南昌工程学院水电站课程设计
- 维修电工实操考试
- 高速铁路电力牵引供电工程施工技术指南2010(共93页)
- 石油钻井工技师理论知识试题
评论
0/150
提交评论