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

    CSS3可以做动画大家肯定都是耳熟能详的了,但是大家有木有巧妙的利用这一个功能来制作一款漂亮的照片墙呢? 那么今天我们就利用CSS3动画这一特性来一起制作漂亮的照片墙吧! 第一部分:HTML 这里我们 ...

  2. PHP批量过滤MYSQL数据库内站外链接和图片

    因发现站内很多引用站外文章的链接失效,产生大量的死链接,对于搜索引擎来说是极不友好的,很不利于网站优化,所以站内添加了站外链接过滤功能,对于新加的文章,在添加入库时就自动增加rel="nof ...

  3. solr windows 启动和关闭命令

    进入bin目录执行  启动:solr -e dih 停止:solr stop -all D:\Solr\solr-5.2.1\solr-5.2.1\bin>solr -e dih

  4. ASP.NET Web API 入门示例详解

    REST服务已经成为最新的服务端开发趋势,ASP.NET Web API即为.NET平台的一种轻量级REST架构. ASP.NET Web API直接借鉴了ASP.NET MVC的设计,两者具有非常类 ...

  5. iOS 中捕获程序崩溃日志

    iOS 中捕获程序崩溃日志 (2014-04-22 17:35:59) 转载▼     iOS开发中遇到程序崩溃是很正常的事情,如何在程序崩溃时捕获到异常信息并通知开发者,是大多数软件都选择的方法.下 ...

  6. C语言使用cmd命令并获取输出方法

    转自http://blog.csdn.net/hxh129/article/details/8000205 C语言使用cmd命令并获取输出方法 在实践中,我们有时候需要用C语言来调用cmd的命令,并得 ...

  7. 三部曲一(数据结构)-1024-Eqs

    解方程整数解的题,通过这道题我学会了这种题的一般做法,对于未知数较少.取值范围较小且解为整数的方程,把一半的未知数移到等式的另一边,然后对两边分别枚举,用哈希配对,如果有相同的结果就找到一组解.具体做 ...

  8. IOS_画图 图片等比压缩 IOS_UIImage

    - (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)size{ // 创建一个bitmap的context // 并把它设置成为当前正在使用的co ...

  9. JQuery源码解析(十一)

    内存泄露 什么是内存泄露? 内存泄露是指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束.在C++中,因为是手动管理内存,内存泄露是经常出现的事情.而现在流行的C#和Java等语言采用了自动 ...

  10. C++ 基本知識回顧

    ---------------------------------------------------------------------------------------------------- ...