1 / 5
文档名称:

八皇后问题作品报告.doc

格式:doc   大小:92KB   页数:5页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

八皇后问题作品报告.doc

上传人:changjinlai 2020/5/29 文件大小:92 KB

下载得到文件列表

八皇后问题作品报告.doc

相关文档

文档介绍

文档介绍:八皇后问题作品报告八皇后问题:国际象棋中,皇后可以在横、竖、斜线上不限步数地吃掉其他棋子,如何将8个皇后放在8×8的棋盘上,使得它们不能互相攻击?源代码://八皇后问题源代码#include""#defineN9intlocate[N]={0};//0号单元不用,locate[m]=n表示第m行第n列中放入皇后intnum=0;//用来标记八皇后的解法种类voidTrial(inti,intn){ intm,p,q; if(i>n) { for(m=1;m<N;m++) { printf("(%d,%d)",m,locate[m]); } num++; printf("\n"); } else { for(p=1;p<N;p++) { for(q=1;q<i;q++) { //用行进行的选择,排除同一列,同一对角线上的情况 if(p==locate[q]||p==locate[q]+(i-q)||p==locate[q]-(i-q)) { break; } } if(q==i) { locate[i]=p; Trial(i+1,N-1); } } } }voidmain(){ intj;for(j=1;j<N;j++) { locate[1]=j; Trial(2,N-1); } printf("八皇后问题的答案总数num=%d\n",num);}使用方法:上述程序采用了递归调用和近似于枚举的方法。本程序采用一行一行进行搜索,排除同一列(p==locate[q]),同一对角线上(p==locate[q]+(i-q)||p==locate[q]-(i-q))的位置,然后进行递归。结果展示: