zoukankan      html  css  js  c++  java
  • 读程序写结果技巧【半转】

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

    ⬇️⬇️⬇️

    以下是几个技巧

    技巧一

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

    技巧二

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

    技巧三

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

    技巧四

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

    技巧五

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

    技巧六

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

    技巧七

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

    技巧八

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

    以上部分转自这里

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

    要会的

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


    原BLOG文:

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

  • 相关阅读:
    用python自定义实现db2的连接池
    python写的爬虫工具,抓取行政村的信息并写入到hbase里
    201521123119《Java程序设计》第4周学习总结
    201521123119《Java程序设计》第5周学习总结
    201521123119《Java程序设计》第6周学习总结
    201521123119《Java程序设计》第1周学习总结
    log4j:WARN No appenders could be found for logger
    android 单元测试
    android手机屏幕适配2
    android手机屏幕适配
  • 原文地址:https://www.cnblogs.com/irischen/p/read-and-write-skill-in-OI.html
Copyright © 2011-2022 走看看