计算机常用算法_ppt.ppt

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

计 算 机 常 用 算 法;7、动态规划;枚举法[穷举法]; 枚举法的算法流程:设ai1为解变量Ai的最小值;aik为解变量的最大值;其中1 ≤ i ≤ n. A1∈ {a11,a12,…,a1K} A2∈ {a21,A22,…,A2K} …… Ai∈ {ai1,Ai2,…,AiK} …… An∈ {an1,An2,…,AnK} 我们称解变量为枚举变量。例如某问题的枚举变量有三个: A1, A2, A3。;A1∈{1,2}, A2∈{2,3,4}, A3∈ {5,6,7} 则问题的可能解为( A1 ,A2, A3 ) ∈ {(1,2,5),(1,2,6),(1,2,7),(1,3,5), (1,3,6),(1,3,7),(1,4,5),(1,4,6), (1,4,7),(2,2,5),(2,2,6),(2,2,7), (2,3,5),(2,3,6),(2,3,7),(2,4,5), (2,4,6),(2,4,7)} 在上述18个可能解的集合中,满足问题给定的检验条件的解元素即为问题的解。;枚举法的优化方法: 1)减少枚举的变量,在使用枚举法之前,先考虑一下解元素之 间的关联,将一些非枚举不可的解元素列为枚举变量,其他元素通过计算得出解元素的可能值。 ;本题目有9个格子,要求填数,如果不考虑问题给出的条件,共有9!=362880种方案,在这些方案中符合条件的即为解。因此可以用枚举法。;[算法分析]:本题是一个逻辑判断题,一般的逻辑判断题都采用枚举法进行解决。四个湖的大小分别可以有4!=24种排列可能,因为24比较小,因此我们对每种情况进行枚举,然后根据给定的条件判断哪些符合问题的要求。;;输入数据:输入文件是input.txt.文件的第一行是两个整数m和n,之间用一个空格隔开,m表示有多少条旅游街(1≤m≤100 ),n 表示有多少条林阴道(1≤n≤20001 )。接下来的m行依次给出了由北向南每条旅游街的分值信息。每行有n-1个整数,依次表示了自西向东旅游街每一小段的分值。同一行相邻两个数之间用一个空格隔开。 输出数据:输出文件是output.txt。文件只有一行,是一个整数,表示你的程序找到的最佳游览线路的总分值。;Lij为第I条旅游街上自西向东第j段的分值(1≤i≤m,1≤j≤n-1 )。例如样例中L12=17,L23=-34,L34=34。 我们将网格状的旅游区街道以林阴道为界分为n-1个段,每一段由m条旅游街的对应成段,即第j段成为{L1j,L2j,。。。Lmj}(1≤j≤n-1 )。由于浏览方向规定横向自西向东,纵向即可沿林阴道由南向北,也可由北向南,而横行的街段有分值,纵行无分值,因此最佳游览路现必须具备如下三个特证: 1)来自若干个连续的段,每一个段中取一个分值; 2)每一个分值是所在段中最大的; 3)起点段和终点段任意,但途经段的分值和最大。 设Li为第i个段中的分值最大的段。即Li=max{L1i,L2i,。。。,Lmi}(1≤i≤n-1 )。例如对于样例数据:;L1=max(-50,17,-42)=17; L2=max(-47,-19,-3)=-3; L3=max(36,-34,-43)=36; L4=max(-30,-13,34)=34; L5=max(-23,-8,-45)=-8;;算法: best:=0;sum:=0; for i:=1 to n-2 do for j:=i+1 to n-1 do begin sum:=sum+Lj;(Li+……+Lj) if sumbest then best:=sum; end;;优化后的算法: best:=0;sum:=0; for i:=1 to n-1 do begin sum:=sum+Li; If sumbest then best:=sum; if sum0 then sum:=0; End; ;;数学函数式递归;program factorial; var n:integer; t:longint; function fac(n:integer):longint; begin if n=0 then fac:=1 else fac:=n*fac(n-1

文档评论(0)

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

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

1亿VIP精品文档

相关文档