想要学好程序设计第一是要养成你的编程思维,也就是你对编程的一种概念和思维定式,长期的解题会让你产生解题经验进而形成一种思维定式,比如看到一个题目就立即想出这题要用什么方法解题这样。编程思维我认为还包括你的数学理念,这样你就可以从不同的角度去思考问题,简化问题,从而很好地帮助你解题。第二点就是排错能力,这点尤为重要,我把几种程序错误来列举一下,大约有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. OC面向对象—封装

    OC面向对象—封装 一.面向对象和封装 面向对象的三大特性:封装(成员变量).继承和多态 在OC语言中,使用@interface和@implementation来处理类. @interface就好像暴 ...

  2. php的特性

    PHP的特性包括: 1. PHP 独特的语法混合了 C.Java.Perl 以及 PHP 自创新的语法. 2. PHP可以比CGI或者Perl更快速的执行动态网页——动态页面方面,与其他的编程语言相比 ...

  3. ZJOI2015 一试。

    虽然早就知道会是这个结果,但是看到的成绩时候还是有些忧伤,奇迹果然还是没有发生. 想了想还是应该写篇博文 纪念一下这段经历. Day0: 报道之后直接去了宾馆,然后意外的发现冬令营时候的室友wxh就住 ...

  4. Android重要控件———ListView

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools= ...

  5. Debian 8(jessie)下设置系统启动直接进入命令行,无GUI

    修改grub项 sudo vi /etc/default/grub 修改其中三项 ... GRUB_CMDLINE_LINUX_DEFAULT="quiet" GRUB_CMDLI ...

  6. UIkit框架之UITabBarController

    1.继承链:UIviewController:uiresponder:NSObject 2.访问tab bar控制器的属性 (1)@property(nonatomic, weak) id< U ...

  7. HDU 1508 DP

    题意:规定一个数列 = {这个数的质因子只能包括2,3,5,7},求第n个数字是多少: 思路:暴力打表,然后只粘数据,虽然过了,但是正解其实是DP,每一个数字都是由某一个该数列里的某一个数字乘以2,3 ...

  8. AngularJS从构建项目开始

    AngularJS从构建项目开始 AngularJS体验式编程系列文章,将介绍如何用angularjs构建一个强大的web前端系统.angularjs是由Google团队开发的一款非常优秀web前端框 ...

  9. 学习笔记:The Log(我所读过的最好的一篇分布式技术文章)

    前言 这是一篇学习笔记. 学习的材料来自Jay Kreps的一篇讲Log的博文. 原文很长,但是我坚持看完了,收获颇多,也深深为Jay哥的技术能力.架构能力和对于分布式系统的理解之深刻所折服.同时也因 ...

  10. asp.net 页面的Meta元素

    <meta charset="utf-8" />    <meta name="viewport" content="initial ...