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

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

⬇️⬇️⬇️

以下是几个技巧

技巧一

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

技巧二

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

技巧三

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

技巧四

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

技巧五

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

技巧六

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

技巧七

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

技巧八

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

以上部分转自这里

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

要会的

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


原BLOG文:

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

原文地址:https://www.cnblogs.com/irischen/p/read-and-write-skill-in-OI.html