读程序写结果技巧【半转】

NOIP初赛读程序写结果的技巧

⬇️⬇️⬇️

以下是几个技巧

技巧一

人工模拟,列表跟踪变量的变化过程

技巧二

化整为零,分割处理 阅读程序时,有些程序比较长,依据循环或子程序可以明显地将其分为几个“段”,这时我们可以化整为零,充分利用程序结构将其分割成若干个子程序段,再集中精力,分别对每个程序段进行独立处理、理解,逐一解决。

技巧三

通过列表模拟,大胆猜想并确定程序目的,完全“机械模拟”存在明显的缺陷:速度太慢且容易人为失误。“模拟”的关键是为了不模拟。即:通过“模拟”,了解程序变量的含义、清理程序结构、体会程序执行的最终目的 ,进而“超越”程序的执行,直接或迅速手算出程序的输出结果。

技巧四

善于把握关键语句(段)或过程名称 算法发展至今,许多功能实现的程序段是经典而通用的。如:选例五的判断素数、选例六的拆位(即进制转换的本质),还有累加、累乘、排序、求最大值最小值,以及一些经典算法。碰到类似这样的程序段,我们可以有依据地判断其程序目的。 “可读性”是程序优劣的一个重要指标。程序书写,为了其可读性,很多时候,变量名及子程序的名称,往往能“见文生义”。通过这些名称,有时很容易猜到子程序的功能(或变量的含义),起到“事半功倍”的效果。

技巧五

字符串的处理字符串操作,无论是NOIP初赛还是复赛,近些年来,频频出现,非常明确地提醒了选手,在准备NOIP竞赛时,必须充分地重视并认真彻底地把字符(串)操作了解清楚。

技巧六

子程序调用 在处理子程序调用时,应注意参数的传递,特别是区分值参与变参。如果存在全程变量与局部变量交叉使用时,要注意变量的作用域。必须清楚,只有在调用的子程序完全执行完毕 ,才能返回调用该子程序的程序中继续执行。

技巧七

计算经典问题的重现,同一个问题,考虑的角度不一样,往往可以写出风格完全不一样,甚至算法完全不同的程序,结果却是相同的:殊途同归。
正因为这样,有些经典问题经常会被拿出来“重写”。在读程序时,应该善于把刚刚看到的“程序”与自己脑海里的信息进行匹配。
一旦找到自己已有信息里类似、甚至相同的问题时,面对的问题也就迎刃而解。 这些经典问题有:素数、排序、约瑟夫问题、杨辉三角、最大公约数(辗转相除法)、高精度计算、二分法、求最短路径、拓扑排序、关键路径、欧拉回路、哈密顿回路、最小生成树、搜索问题等等。

技巧八

巧用数学知识推理 有些程序,我们粗读一遍就可以知道其循环执行的次数非人工模拟能够忍受,或根本就没法模拟,这时应该想一想能否运用数学知识,推理得出程序执行的结果。当然,这要求选手要有扎实的数学功底。

以上部分转自这里

一定要会背的几个模板(等有时间了全都搬运上来模板!【哦天哪我给自己挖了多少坑】

要会的

素数、排序、约瑟夫问题、杨辉三角、最大公约数(辗转相除法)、高精度计算、二分法、求最短路径、拓扑排序、关键路径、欧拉回路、哈密顿回路、最小生成树、搜索问题等等。


原BLOG文:

技巧一:人工模拟,列表跟踪变量的变化过程
技巧二:化整为零,分割处理 阅读程序时,有些程序比较长,依据循环或子程序可以明显地将其分为几个“段”,这时我们可以化整为零,充分利用程序结构将>其分割成若干个子程序段,再集中精力,分别对每个程序段进行独立处理、理解,逐一解决。
技巧三:通过列表模拟,大胆猜想并确定程序目的,完全“机械模拟”存在明显的缺陷:速度太慢且容易人为失误。“模拟”的关键是为了不模拟。即:通过“模
拟”,了解程序变量的含义、清理程序结构、体会程序执行的最终目的 ,进而“超越”程序的执行,直接或迅速手算出程序的输出结果。
技巧四:善于把握关键语句(段)或过程名称 算法发展至今,许多功能实现的程序段是经典而通用的。如:选例五的判断素数、选例六的拆位(即进制转换的>本质),还有累加、累乘、排序、求最大值最小值,以及一些经典算法。碰到类似这样的程序段,我们可以有依据地判断其程序目的。 “可读性”是程序优劣的>一个重要指标。程序书写,为了其可读性,很多时候,变量名及子程序的名称,往往能“见文生义”。通过这些名称,有时很容易猜到子程序的功能(或变量的
含义),起到“事半功倍”的效果。
技巧五:字符串的处理字符串操作,无论是NOIP初赛还是复赛,近些年来,频频出现,非常明确地提醒了选手,在准备NOIP竞赛时,必须充分地重视并认真彻
底地把字符(串)操作了解清楚。
技巧六:子程序调用 在处理子程序调用时,应注意参数的传递,特别是区分值参与变参。如果存在全程变量与局部变量交叉使用时,要注意变量的作用域。必>须清楚,只有在调用的子程序完全执行完毕 ,才能返回调用该子程序的程序中继续执行。
技巧七:计算经典问题的重现,同一个问题,考虑的角度不一样,往往可以写出风格完全不一样,甚至算法完全不同的程序,结果却是相同的:殊途同归。
正因为这样,有些经典问题经常会被拿出来“重写”。在读程序时,应该善于把刚刚看到的“程序”与自己脑海里的信息进行匹配。
一旦找到自己已有信息里类似、甚至相同的问题时,面对的问题也就迎刃而解。 这些经典问题有:素数、排序、约瑟夫问题、杨辉三角、最大公约数(辗转相>除法)、高精度计算、二分法、求最短路径、拓扑排序、关键路径、欧拉回路、哈密顿回路、最小生成树、搜索问题等等。
技巧八:巧用数学知识推理 有些程序,我们粗读一遍就可以知道其循环执行的次数非人工模拟能够忍受,或根本就没法模拟,这时应该想一想能否运用数学知?>识,推理得出程序执行的结果。当然,这要求选手要有扎实的数学功底。

转载于:https://www.cnblogs.com/irischen/p/read-and-write-skill-in-OI.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《java程序设计》课程的题库资料,由贺州学院整理,可供学生期末课程复习使用,也可以供相关任课教师出卷使用。 内容示例为: 9. 阅下列程序片段,出运行结果。 public class Test { public static void main(String[] args) { int percent = 10; tripleValue(percent); System.out.println(percent); } public static void tripleValue(int x) { x = 3 * x; } } 代码执行后输出的结果是______。 答案:10 [解析] static 关键字应用的场合有:①用来修饰类中定义的变量,这样的变量称为类变量或静态变量。②可以用来修饰类中定义的方法,这样的方法称为静态方法。③用来修饰初始化语句块,这样的语句块常称为静态初始化语句块。static 在这里表示这个方法为类方法,不属于任何对象实例,而是类所有,描述对象的共有动作,可以用类名直接调用。在调用了tripleValue函数之后,函数的值没有返回,所以percent的值还是10。 10. 阅下列程序片段,出运行结果。 class Shape { public Shape() { System.out.print("Shape"); } } class Circle extends Shape { public Circle() { System.out.print("Circle"); } } public class Test { public static void main(String[] args) { Shape d = new Circle(); } } 代码执行后输出的结果是______。 答案:ShapeCircle [解析] 继承是而向对象编程的一个主要优点之一,它对如何设计Java类有着直接的影响。继承有如下几点好处: ①它可以利用已有的类来创建自己的类,只需要指出自己的类和已有的其他类有什么不同即可,而且还可以动态访问其他有 关类中的信息。 ②通过继承,可以利用Java类库所提供的丰富而有用的类,这些类都已经被很好地实现。 ③当设计很大的程序时,继承可以使程序组织得层次清晰,有利于程序设计相减少错误的发生。该程序首先编了一个Shape的类,然后又编一个类Circle去继承Shape类。由于子类拥有父类所有的属性和方法,所以输出的是ShappeCircle。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值