想要学好程序设计第一是要养成你的编程思维,也就是你对编程的一种概念和思维定式,长期的解题会让你产生解题经验进而形成一种思维定式,比如看到一个题目就立即想出这题要用什么方法解题这样。编程思维我认为还包括你的数学理念,这样你就可以从不同的角度去思考问题,简化问题,从而很好地帮助你解题。第二点就是排错能力,这点尤为重要,我把几种程序错误来列举一下,大约有5种常见的典型错误,从特殊到一般说说我的解决方法。
一、OLE
OLE,也就是多余输出,这种错误基本上出现在while not eof 和0尾版之中,有的题目并未指明是0尾版,如果用了while not eof 就会出现这种情况,通常改成0尾版即可解决。如zerojudge上的a282一题,并未指明是0尾版,但是用while not eof就会出现OLE的情况,其实此题只需遇到0不输出即可,也不需使用0尾版。
二、RE
RE,通常是因为超出数据范围或数据类型错误时出现,需修改或扩大数据类型,然而超大数题目还用int64去解的话恐怕就要换一种思路了。
三、TLE
TLE,也就是超时,遇到此类情况就要尽可能地去减少程序的开销,达到解题时间的减少,但如果实在不行的话,恐怕也得像a007一样换种思路解题了。
四、CE
CE,编译错误,这种问题很好解决,只需在freepascal中调试,查看窗口下方报错信息就OK了。
五、WA/NA
WA/NA,这是最普遍的一种错误,也就是程序运算错误,相对而言,从排错方面就很难去解决,我通常采用的方法称为“分布输出辨错法”。就以zerojudge上的c039 the 3n+1 problem 为例。
var
  a,b,k,t,i,n,h,h2,t2:longint;
  f,d:boolean;
begin
  while not eof do begin
    readln(n,b);
    h:=n;
    h2:=b;
    if n>b then begin
       n:=b;
       b:=h;
    end;
    for i:=n to b do begin
      a:=i;
      f:=true;
      d:=true;
      k:=a;
      t:=0;
      if a=1 then f:=false;
      while f and d do begin
        if a mod 2 =0 then a:=a div 2
                      else a:=3*a+1;
        t:=t+1;
        if a=k then d:=false
               else if a=1 then f:=false;
      end;
      if t>t2 then t2:=t;
    end;
    writeln(h,' ',h2,' ',t2+1);
    t2:=0;
  end;
end.
以上为此题的正确代码,如果误将
if a mod 2 =0 then a:=a div 2
              else a:=3*a+1;
的div写成mod,这必然会影响到后面的运算,如果在纯用肉眼去看无法发现时(有时的确脑袋卡壳这点问题都发现不了),就在这后面加个输出writeln(a);这就可以很直观这看出a的变化情况,很好的减低了辨错的难度,进而获得AC。
总而言之,编程能力是要靠不断地学习和解题才能提升的,不断地总结,才能进步~~
 
陈申奥:现就读于顾村中学,五个月的时间里在ZEROJUDGE中解出了二百二十多道题,目前已解出三百七十多道题,2015年NOIP普及组一等奖(上海市排名第十五)。陈申奥对题目的理解和分析能力相当惊人,他在程序设计学习方面付出的努力和面对难题不言放弃的毅力值得我们学习。

我的ZJ解题心得的更多相关文章

  1. leetcode网解题心得——61. 旋转链表

    目录 leetcode网解题心得--61. 旋转链表 1.题目描述 2.算法分析: 3.用自然语言描述该算法 4.java语言实现 5.C语言实现 leetcode网解题心得--61. 旋转链表 1. ...

  2. wechall.net/stegano 解题心得

    /* 转载请注明出处:http://www.cnblogs.com/Martinium/p/wechall_stegano.html */ 最近迷上了 www.wechall.net 网站,里面都是些 ...

  3. Zerojudge解题心得

    我进入娄山中学已经有1年多了,也就是说我学习编程也有1年多了,在这一年多的时间中,我已经对编程有了初步的了解.其实只要抓住平时的空闲时间加以利用,哪怕每个星期就做那么三四题,经过了一段时间沉淀,也会有 ...

  4. POJ1159解题心得

    题目:http://poj.org/problem?id=1159 刚开始,从样例的特征去思考.总让我从回文数的角度去思考,想出几个方案,可都用了数据去检验,发现不行.如:ABCDDCB,BACDCA ...

  5. 树状数组:CDOJ1583-曜酱的心意(树状数组心得)

    曜酱的心意 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 131072/131072KB (Java/Others) Description ...

  6. hdu 1159:Common Subsequence(动态规划)

    Common Subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  7. 九度OJ—题目1032:ZOJ

    题目描写叙述: 读入一个字符串.字符串中包括ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出.当某个字符用完时,剩下的仍然依照ZOJ的顺序输出. 输入: 题目包括多组用例,每组用例占一行,包括ZOJ ...

  8. 题目1203:IP地址

    题目: http://ac.jobdu.com/problem.php?pid=1203 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3052 解决:1504 题目描述: 输入一个ip地 ...

  9. HDU 2602 Bone Collector WA谁来帮忙找找错

    Problem Description Many years ago , in Teddy’s hometown there was a man who was called “Bone Collec ...

随机推荐

  1. iOS开发UI篇—iPad开发中得modal介绍

    iOS开发UI篇—iPad开发中得modal介绍 一.简单介绍 说明1: 在iPhone开发中,Modal是一种常见的切换控制器的方式 默认是从屏幕底部往上弹出,直到完全盖住后面的内容为止 说明2: ...

  2. Client默认用户及登录密码(转)

    Client默认用户及登录密码 SAP系统(如ERP.CRM等)安装完成,初始化状态下有若干个客户端(Client).如果是生产系统,一般只有000.001.066等三个Client:如果是IDES系 ...

  3. HTTP 超时

    TWinHTTPTimeouts = class(TPersistent) private FConnectTimeout, FReceiveTimeout, FSendTimeout: DWord; ...

  4. 什么是CPA, CPS, CPT?

    在互联网上或移动端进行产品推广时,经常听到很多术语,什么CPA,CPS,CPT等等.不知是怎么来的,今天网上搜一下术语,在这里做一下笔记. CPA(Cost Per Action) 每行动成本. CP ...

  5. 《TCP/IP详解卷1:协议》第2章 链路层-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

  6. DDOS的攻击原理和防护指南(转)

    DDOS的攻击原理和防护指南 作者:冰盾防火墙 网站:www.bingdun.com 日期:2008-01-07   我们现在来分析DDOS的攻击原理.     首先,DDOS是英文Distribut ...

  7. jvm1

    字节码常量池: 01开头的说明是一个utf-8编码的常量,那么后面就一定要跟两个字节也就是四位16进制的数,来表示这个常量占几个字节,然后后面再跟与这个字节数对应长度的utf-8编码的字符串.之所以一 ...

  8. Javascript笔记一

    Javascript: ECMAscript :相当于翻译器 翻译电脑于代码  解释器 DOM document object model  文档 对象 模型  --->document  获取 ...

  9. linux命令:less

    1.命令介绍: less用来逐页输出文件内容,less相比more功能更加强大,less可以前后翻页,前后搜索. 2.命令格式: less [选项] 文件 3.命令参数: -b <缓冲区大小&g ...

  10. 上下margin重叠传递问题

    我发现强迫症真的是我一个大病...每次都非得把所有情况都实验出来不可...BUT!!!!!!!!!悲催的是,这么多情况我根本记不住...还是要在写代码的时候不断出错再排错~受不了自己了!不过还是把这部 ...