PASCAL-八皇后问题解题报告.doc

PASCAL-八皇后问题解题报告.doc

ID:57631650

大小:29.00 KB

页数:5页

时间:2020-08-29

PASCAL-八皇后问题解题报告.doc_第1页
PASCAL-八皇后问题解题报告.doc_第2页
PASCAL-八皇后问题解题报告.doc_第3页
PASCAL-八皇后问题解题报告.doc_第4页
PASCAL-八皇后问题解题报告.doc_第5页
资源描述:

《PASCAL-八皇后问题解题报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、八皇后问题,是一个古老而著名的问题,是回溯算法的典型例题。该问题是十九世纪著名的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种方法可以解决此问题。现求n皇后的解法。本题可以一个二维数组,放了皇后用1表示,没放皇后用0表示。然后用深度优先搜索设计程序。程序如下:vara:array[1..100,1..100]ofinteger;h,x,y:array[-1

2、00..100]ofboolean;i,k,n,f,m:integer;proceduret(i:integer);//穷举第i个皇后摆放的列varj:integer;//不可定为全程变量beginforj:=1tondoifh[j]andx[i+j]andy[i-j]thenbegina[i,j]:=1;h[j]:=false;x[i+j]:=false;y[i-j]:=false;ifi

3、n;end;writeln;end;h[j]:=true;//回溯x[i+j]:=true;y[i-j]:=true;a[i,j]:=0;end;end;beginassign(input,'nhuanghou.in');assign(output,'nhuanghou.out');reset(input);rewrite(output);readln(n);fillchar(h,sizeof(h),true);fillchar(y,sizeof(y),true);fillchar(x,sizeof(x),true);t(1);write(f);close(input);close(outp

4、ut);end.后来,我又把它压缩成了一维数组。程序如下:vara:array[1..100]ofinteger;h,x,y:array[-100..100]ofboolean;i,j,k,n,f,m:integer;proceduret(i:integer);beginforj:=1tondoifh[j]andx[i+j]andy[i-j]thenbegina[i]:=j;h[j]:=false;x[i+j]:=false;y[i-j]:=false;ifi

5、enwrite('*')elsewrite('-');writeln;end;writeln;end;h[j]:=true;x[i+j]:=true;y[i-j]:=true;end;end;beginassign(input,'nhuanghou.in');assign(output,'nhuanghou.out');reset(input);rewrite(output);readln(n);fillchar(h,sizeof(h),true);fillchar(y,sizeof(y),true);fillchar(x,sizeof(x),true);t(1);write(f);clos

6、e(input);close(output);end.但我输入4后,输出的确是0。我想了一下,4皇后有两种结果。我的程序错了。后来,我找到了错误,因为j应该是一个局部变量,不然就无法实现回溯了。修改后的程序如下:vara:array[1..100]ofinteger;h,x,y:array[-100..100]ofboolean;i,k,n,f,m:integer;proceduret(i:integer);varj:integer;beginforj:=1tondoifh[j]andx[i+j]andy[i-j]thenbegina[i]:=j;h[j]:=false;x[i+j]:=fa

7、lse;y[i-j]:=false;ifi

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

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

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