B班day1上午枚举与搜索教案朱全明PPT.pptVIP

  1. 1、本文档共66页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
B班day1上午枚举与搜索教案朱全明PPT

枚举与搜索讲稿 长沙市雅礼中学 朱全民;有关搜索的NOIP试题 ;简单枚举法;火柴棒等式 ;分析;侦探推理;分析;分析;分析;优化;现有一个棱长为n的立方体,可以分成n3个1*1*1的单位立方体。每个单位立方体都有一个整数值。n3个单位立方体的数和不会超过longint范围。现在要求在这个立方体找到一个包含完整单位立方体的长方体,使得该长方体内所有单位立方体的数和最大。 输入: n(1≤n≤20);n个n*n的数字矩阵,每个数字矩阵代表一层,每个数字代表一个单位立方体的整数值,-999≤单位立方体的整数值≤999 输出:长方体的数和;“简单”枚举过程;从减少重复计算入手;3、提取恰当的信息 上述考察实际上求出z轴坐标为z2的平面中矩形(x1,y1,x2,y2)的数和。我们将这个数和记为value(a) value(A)=value(ABCD)+value(B)-value(BC)-value(BD) 这就启发我们用另一种方法表示立方体的信息:设rec[x,y,z]表示z轴坐标为z的水平面中矩形(1,1,x,y)的数和。 ? z轴坐标为z的水平面中左上角为(x1,y1)、右下角为(x2,y2)的矩阵的数和为rec[x2,y2,z]+ rec[x1,y1,z]-rec[x2,y1,z]-rec[x1,y2,z] ?;Rec数组可以在输入数据的同时计算 fillchar(rec,size(rec),0);{rec数组初始化} for z←1 to n do {逐层输入信息} for x←1 to n do {逐行输入z平面的信息} for y←1 to n do {逐列输入z平面上x行的信息} begin read(map[x,y,z]); {输入z平面上(x,y)中的数} if (x=1)and(y=1) {计算z平面上以(1,1)为左上角、(x,y)为右下角的矩形的数和} then rec[1,1,z]←map[1,1,z] else if y=1 then rec[x,y,z]←rec[x-1,n,z]+map[x,y,z] else rec[x,y,z]←rec[x,y-1,z]+map[x,y,z]; end;{for} 这样,考察过程就可以改为 sum←sum+rec[x2,y2,z2]+rec[x1,y1,z2]-rec[x2,y1,z2]-rec[x1,y2,z2]; if sumbest then best←sum; 时间复杂度降为O(n6)。;;算法框架;深度优先搜索;深度搜索算法的几个重要因素;深度搜索的基本框架;N皇后问题;基本思想;算法基本框架;边界条件设置;程序;给出一个矩阵及一些国都名: o k d u b l i n dublin a l p g o c e v tokyo r a s m u s m b london o s l o n d o n rome y i b l g l r c bonn k r z u r i c h paris o a i b x m u z oslo t p q g l a m v lima 要求从这个矩阵中找出这些国都名,并输出它们的起始位置及方向。 ;算法思想;Procedure Work(T,X,Y:Integer); {搜索路径,T为国都名的字符位置,X,Y为当前搜索的坐标} Var I : Integer; Begin If T=Length(S)+1 Then begin {搜索完,打印输出} Out; exit end; For I:=1 To 8 Do {八个方向进行搜索} Begin X:=X+Fx[I,1]; Y:=Y+Fx[I,2]; {坐标变化} If (A[X,Y]=S[T])And(B[X,Y]) Then Begin W:=W+Chr(I+48); {记录路径} B[X,Y]:=False; {设置已经搜索} Work(T+1,X,Y); {继续搜索下一个} Delete(W,Length(W),1);{恢复原路径} B[X,Y]:=True; {恢复标志} E

您可能关注的文档

文档评论(0)

djdjix + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档