备战读程序完善程序_第1页
备战读程序完善程序_第2页
备战读程序完善程序_第3页
备战读程序完善程序_第4页
备战读程序完善程序_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 读程序写结果读程序写结果 完善程序完善程序阅读程序现写结果方法阅读程序现写结果方法 一、直接推理一、直接推理 基本运算题 理解理解div、mod、and 、or等运算符等运算符的含义并掌握运用的含义并掌握运用 注意它们之间的优先级别注意它们之间的优先级别 算术运算算术运算关系运算关系运算逻辑运算逻辑运算 And or div、mod、优先级别相同,按从左至、优先级别相同,按从左至右方向有序运算右方向有序运算 Var u:array0.3 of integer; I,a,b,c,x,y,z:integer; Begin for i:=0 to 2 do ui:=i*2+1; u3:=u0 or

2、 u1 and u2+1; a:=u0 +u1 +u2 +u3-5; b:=u0*(u1-u2 div u3+8); c:=u0*u1 div u2*u3; x:=(a+b+2)*3-u(c+3) mod 4; y:=(c*100-13) div a div (ub mod 3*5); if (x+y) mod 2=0) then z:=(a+b+c+x+y) div 2; z:=(a+b+c-x-y)*2; writeln(x+y-z); End.可关注递归计算题可关注递归计算题,如如斐波那契数列斐波那契数列对于一些语句少、结构简单且可读性较强的程序,对于一些语句少、结构简单且可读性较强的程

3、序,不妨通过分析程序流程,直接寻找其间蕴含的计不妨通过分析程序流程,直接寻找其间蕴含的计算模型。算模型。varm,n,I:integer;t:extended;begin readln(n,m); t:=1; for i:=1 to m do t:=t*(n-i+1)/i; writeln(t:0:0);end.输入输入10 5输出:输出: 直接推理直接推理【分析】由【分析】由for循环可以看出循环可以看出t= ,即即i=1时,时,t=n;i=2时,时,t=n*(n-1)/2;i=3时,时,t=n* (n-1)/2 * (n-2)/3 ;i=m时,时,t= c(n,m)=n!/(m!*(n-m

4、)!)miiin11显然,这是求组合数。当输入显然,这是求组合数。当输入n=10、m=5时,程序应输出时,程序应输出252。label 10,20,30;var s,p:string; i,k,n,j,m:integer;begin readln(s); n:=length(s); readln(p); m:=length(p); i:=0; 10: i:=i+1; j:=i; k:=1; 20: if sjpk then begin if in-m+1 then goto 10; i:=0; goto 30; end else if k 0) then begin for j:=i down

5、to 0 do write(ansj); writeln;break; end;then End. 输入输入 输出输出 5 20update(var a)是将数组是将数组a规整为高精度的十规整为高精度的十进制数组进制数组mult(var a,b)是将高精度的十进是将高精度的十进制数组制数组a乘以整数乘以整数b,积存储在积存储在a中。中。 add(x, ob)计算因子表,计算因子表,ob=1,numnum*x;ob=-1,numnum/x。其中其中numi为因子为因子i的个数的个数 主程序计算主程序计算catalan数数1/(n+1)*c(2*n,n) 。显然显然n=5,则程序输出则程序输出42

6、(1/6*c(10,5)完善程序完善程序 填空内容:填空内容: 1、变量方面的填空、变量方面的填空 2、循环方面的填空、循环方面的填空 3、分支转移方面的填空、分支转移方面的填空 4、主程序和子程序关系方面的填空、主程序和子程序关系方面的填空 5、输入输出方面的填空、输入输出方面的填空 填空方法:填空方法: 按照自顶向下的思维方法阅读程序按照自顶向下的思维方法阅读程序从主程序开始,从主程序开始,沿控制层次向下阅读。在查到某一个子程序沿控制层次向下阅读。在查到某一个子程序(子模块子模块)时,比时,比照题目给出的说明和调用它的照题目给出的说明和调用它的“父程序父程序(父模块父模块)”,弄清该,弄清

7、该子程序子程序(子模块子模块)究竟要达到什么样的子目标,然后查程序,究竟要达到什么样的子目标,然后查程序,看它是如何实现这个子目标的。如果该子程序看它是如何实现这个子目标的。如果该子程序(子模块子模块)有空有空格,则按照算法的逻辑进行填空。依次类推,直至最底层的格,则按照算法的逻辑进行填空。依次类推,直至最底层的子程序(子模块)中的空格全部填完为止。子程序(子模块)中的空格全部填完为止。指导思想指导思想假定假定填写填写验证验证调整调整验证验证 1、背包问题:设有不同价值、不同重量的物品、背包问题:设有不同价值、不同重量的物品n件,求件,求从这从这n件物品中选取部分物品的方案,使选中物品的总重件

8、物品中选取部分物品的方案,使选中物品的总重量不超过指定的限制重量,但选中物品的价值之和最大。量不超过指定的限制重量,但选中物品的价值之和最大。 算法说明算法说明:设:设n件物品的重量分别为件物品的重量分别为w1,w2,wn;,;,物品的价值分别为物品的价值分别为v1,v2,vn。采用递归寻找物品的选。采用递归寻找物品的选择方案。设前面已有了多种选择的方案,并保留了其中择方案。设前面已有了多种选择的方案,并保留了其中总价值最大的方案于数组总价值最大的方案于数组result中,该方案的总价值存于中,该方案的总价值存于变量变量maxv。当前正在考察某一新的方案,其物品选择情。当前正在考察某一新的方案

9、,其物品选择情况保存于数组况保存于数组option中。假定当前方案已考虑了前中。假定当前方案已考虑了前i-1件件物品,现在要考虑第物品,现在要考虑第i件物品;当前方案已包含的物品的件物品;当前方案已包含的物品的重量之和为重量之和为tw;至此,若其余物品都选择是可能的话,;至此,若其余物品都选择是可能的话,本方案能达到的总价值的期望值设为本方案能达到的总价值的期望值设为tv。算法引入。算法引入tv是当是当一旦当前方案的总价值的期望值也小于前面方案的总价一旦当前方案的总价值的期望值也小于前面方案的总价值值maxv时,继续考察当前方案变成无意义的工作,应终时,继续考察当前方案变成无意义的工作,应终止

10、当前方案,立即去考察下一个方案。因为当方案的总止当前方案,立即去考察下一个方案。因为当方案的总价值不比价值不比maxv大时,该方案不会再被考察。这同时保证大时,该方案不会再被考察。这同时保证后面找到的方案一定会比前面的方案更好。后面找到的方案一定会比前面的方案更好。 program ex01; const maxn=20; var i,n,limitw,maxv,totalv:longint; w,v:array1.maxn of longint; result,option:array1.maxn of boolean; procedure try(i,tw,tv:longint); var

11、 k:longint; begin if tw+wi=limitw then begin optioni:=true; if imaxv then if i0) and (x0) and (y=n) and bzx,ythen begin inc(w);hw,1:=x;hw,2:=y;bzx,y:=false;end; end; inc(t);until _ (4)_;end; beginfillchar(bz,sizeof(bz),true); num:=0;write(input file:); readln(name);assign(int,name); reset(int);readln(int,m,n);for i:=1 to m dobegin readln(int,s);for j:=1 to n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论