n皇后问题实验报告材料

n皇后问题实验报告材料

ID:40065217

大小:79.90 KB

页数:10页

时间:2019-07-19

n皇后问题实验报告材料_第1页
n皇后问题实验报告材料_第2页
n皇后问题实验报告材料_第3页
n皇后问题实验报告材料_第4页
n皇后问题实验报告材料_第5页
资源描述:

《n皇后问题实验报告材料》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实用文档N后问题算法一、实验目的及要求所要涉及或掌握的知识:1.      了解皇后相互攻击的条件:如果任意两个皇后在同一行,同一列或同一对角线,则她们相互攻击。2.      运用迭代的方法实现6皇后问题,求解得到皇后不相互攻击的一个解3.      在运用迭代的方法实现编程时,要注意回溯点二、问题描述及实验内容对6皇后问题求解,用数组c[1…6]来存皇后的位置。c[i]=j表示第i个皇后放在第j列。最后程序运行的结果是c[1…6]={1,5,8,6,3,7}三、问题分析和算法描述6-QUEENS的算法表示:输入:空。输出:对应于6皇后问

2、题的解的向量c[1…6]={1,5,8,6,3,7}1.      fork=1to62.      c[k]=0         //没有放皇后3.      endfor4.      flag=false5.      k=16.      whilek>=17.         whilec[k]<=58.               c[k]=c[k]+1文案大全实用文档9.               ifc为合法着色 thensetflag=ture且从两个while循环退出10.            elseifc是部分解

3、thenk=k+111.      endwhile12.   c[k]=0              //回溯并c[k]=013.   k=k-114.   endwhile15.   ifflag thenoutputc16.   elseoutput“nosolution”四、具体实现#include#include#include#include#include"iostream"usingnamespacestd;inttotal=0;//方案计数voidbac

4、ktrace(intqueen[],intN){inti,j,k;cout<<"★为皇后放置位置";for(i=1;;){//首先安放第1行  if(queen[i]

5、   i++;//无冲突,安置下一行皇后   if(i

6、  if(total%5==0)cout<

7、;   }   elsequeen[i]++;//前一行皇后右移一列  }}}voidmain(){while(1){  clock_tstart,finish;  doubleduration;  intN;  cout<<"请输入皇后个数:"<>N;  int*queen=newint[N];文案大全实用文档  for(inti=0;i

8、 backtrace(queen,N);  finish=clock();  duration=(double)(finish-start);    cout<<"为找出放置方法

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

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

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