【题27】挖地雷.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【题27】挖地雷

【题27】挖地雷 在一个地图上有n个地窖(n20),每个地窖中埋有一定数量的地雷,同时,给出地窖之间的联系路径.例如: V1,V2,V3,...,V6表示地窖6.2 图6.2 [题目要求] 当地窖及其连接的数据给出之后,某人可以从一处开始挖地雷,然后可以沿着指出的连接往下挖(仅能选择一条路径),地窖当无连接时,挖地雷工作结束设计一个挖地雷的方案,使某人能挖到最多的地雷 输入格式: n (表示地窖的个数) W1 W2 W3......Wn A12.........A1n A23.......A2n ......... A(n-1,n) 表示地窖之间连接路径(其中Aij表示地窖i,j之间是否有通路:通Aij=1,不通Aij=0) 输出格式:R1-R2-...-Rk (挖地雷的顺序) max (为挖地雷的数量) 例如6.2: 6.2其输入格式为: 5 10 8 4 7 6 1 1 1 0 0 0 0 1 1 1 输出: 2-1-3-4-5 max=35地窖地窖地窖地窖地雷地窖6.26.2地窖地窖地窖挖地雷地雷 ①计算无向图的传递闭包 设 var link,longlink:array[1..20,1..20] of boolean;{ 无向图和无向图的传递闭包。其中} 我们递推产生longlink(0)、longlink(1)、…longlink(n)。在递推过程中,路径长度的’+’运算和比较大小运算用相应的逻辑运算符’∧’和’∨’代替。对于i,jk=1‥n,如果图中结点i至结点j间存在通路且所有结点序号均属于{1‥k},则定义longlinkij(k)=1;longlinkij(k)=0。 且对于k≥1 longlinkij(k)=longlinkij(k-1) ∨ (longlinkik(k-1) ∧longlinkkj(k-1)) 由于布尔值的存储量少于整数且位逻辑运算的执行速度快于算术运算,因此后者无论在时间和空间上都优于前一种算法。具体运算过程如下: 传递闭包longlink的计算过程如下: longlink←link; for k←1 to n do {枚举中间地窖地窖地窖i地窖j地雷地雷地窖地雷地窖{枚举每一个地窖} 地窖i地雷k} if longlink[i,j] then inc(k,mines[j]); if kbest         {若k为目前最大,则记入best,i作为代表地窖besti} then begin best←k;besti←i;end; if k=total then break;              {若整个图为连通图,则退出} end;{for} 输出最多地雷地窖地窖x地雷地窖x地窖地雷true表明地窖x地雷地雷best时搜索结束; 递归搜索最佳方案的过程如下: procedure search(x:shortint); var i:shortint; begin if not visited[x] then inc(total,mines[x]);     {若地窖x地雷地雷地窖x地窖x地窖’- ’,i);                         {递归输出路径} search(i); write(’- ’,x); end;{then} end;{ search } 显然,在主程序中通过 fillchar(visited,sizeof(visited),false);      {访问序列和挖到的地雷地窖挖地雷的方案

您可能关注的文档

文档评论(0)

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

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

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档