基础训练题目和题解.doc

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PASCAL基础训练题目及题解 【execans.2 为深度优先搜索,广度优先搜索类,及技巧性题目题解】 【题目1】N皇后问题(八皇后问题的扩展) 【题目2】排球队员站位问题 【题目3】把自然数N分解为若干个自然数之和。 【题目4】把自然数N分解为若干个自然数之积。 【题目5】马的遍历问题。 【题目6】加法分式分解 【题目7】地图着色问题 【题目8】在n*n的正方形中放置长为2,宽为1的长条块, 【题目9】找迷宫的最短路径。(广度优先搜索算法) 【题目10】火车调度问题 【题目11】农夫过河 【题目12】七段数码管问题。 【题目13】把1-8这8个数放入下图8个格中,要求相邻的格(横,竖,对角线)上填的数不连续. 【题目14】在4×4的棋盘上放置8个棋,要求每一行,每一列上只能放置2个. 【题目15】迷宫问题.求迷宫的路径.(深度优先搜索法) 【题目16】一笔画问题 【题目17】城市遍历问题. 【题目18】棋子移动问题 【题目19】求集合元素问题(1,2x+1,3X+1类) ================================================================================ ================================================================================ 【题目】N皇后问题(含八皇后问题的扩展,规则同八皇后):在N*N的棋盘上,放置N个皇后,要求每一横行每一列,每一对角线上均只能放置一个皇后,问可能的方案及方案数。 const max=8; var i,j:integer; a:array[1..max] of 0..max;?? {放皇后数组} b:array[2..2*max] of boolean;?{/对角线标志数组} c:array[-(max-1)..max-1] of boolean; {\对角线标志数组} col:array[1..max] of boolean;? {列标志数组} total:integer;?? {统计总数} procedure output; {输出} var i:integer; begin ???? write(No.:4,[,total+1:2,]); ???? for i:=1 to max do write(a[i]:3);write(???? ); ???? if (total+1) mod 2 =0 then? writeln;? inc(total); end; function? ok(i,dep:integer):boolean;? {判断第dep行第i列可放否} begin ?ok:=false; ?if ( b[i+dep]=true) and ( c[dep-i]=true) {and (a[dep]=0)} and ??? (col[i]=true) then?? ok:=true end; procedure try(dep:integer); var i,j:integer; begin ???? for i:=1 to max do??? {每一行均有max种放法} ?????? if? ok(i,dep) then begin ? a[dep]:=i; ? b[i+dep]:=false;? {/对角线已放标志} ? c[dep-i]:=false;? {\对角线已放标志} ? col[i]:=false;??? {列已放标志} ? if dep=max then output ??? else try(dep+1); {递归下一层} ? a[dep]:=0;??? {取走皇后,回溯} ? b[i+dep]:=true;?? {恢复标志数组} ? c[dep-i]:=true; ? col[i]:=true; ?????? end; end; begin ???? for i:=1 to max do begin a[i]:=0;col[i]:=true;end; ???? for i:=2 to 2*max do b[i]:=true; ???? for i:=-(max-1) to max-1 do c[i]:=true; ???? total:=0; ???? try(1); ???? writeln(total:,total); end. 【测试数据】 n=8 八皇后问题 ?No.[ 1]? 1? 5?8? 6? 3? 7? 2? 4????? No.[ 2]? 1? 6? 8?3? 7? 4? 2? 5 ?No.[ 3]? 1? 7?4? 6? 8? 2? 5? 3????? No.[ 4]? 1?

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档