想要学好程序设计第一是要养成你的编程思维,也就是你对编程的一种概念和思维定式,长期的解题会让你产生解题经验进而形成一种思维定式,比如看到一个题目就立即想出这题要用什么方法解题这样。编程思维我认为还包括你的数学理念,这样你就可以从不同的角度去思考问题,简化问题,从而很好地帮助你解题。第二点就是排错能力,这点尤为重要,我把几种程序错误来列举一下,大约有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. 美女程序员是如何将QQ转换成题目中那串数字的--读博文《找女神要QQ号码》

    我只能说好好的端午节你们不约么?,还在这里写代码?我也是够无聊的,下班了不走也在这跟风写着玩!<找女生要QQ号码原文>原文链接http://www.cnblogs.com/iforever ...

  2. iOS开发UI篇—九宫格坐标计算

    iOS开发UI篇—九宫格坐标计算 一.要求 完成下面的布局 二.分析 寻找左边的规律,每一个uiview的x坐标和y坐标. 三.实现思路 (1)明确每一块用得是什么view (2)明确每个view之间 ...

  3. JavaScript常见问题整合

    一. 基本变化<SCRIPT LANGUAGE="javascript"> <!-- window.open ('page.html', 'newwindow', ...

  4. Python基础教程-第一章-变量、函数、字符串

    1.1变量 变量基本上就是代表(或者引用)某个值的名字,举例来说,如果希望用x代表3,只需要执行下面的语句即可: >>>x = 3 这样的操作称为赋值(assignment),值3赋 ...

  5. System.exit(0)作用

    System.exit(0)作用   public class HelloGoodbye{ try{ System.out.println(“Hello World”); System.exit(0) ...

  6. android 总结(样式)—跑马灯 button的点击效果 RadioGroup 实现滑动的效果 button 下面有阴影 卡片样式

    <Button android:layout_width="wrap_content" android:layout_height="wrap_content&qu ...

  7. Asp.net MVC 视图(四)

    强类型辅助方法 模板辅助方法 Asp.net MVC中的模板辅助方法利用元数据和模板构建HTML,即:模板辅助方法可以通过使用数据注解,在运行时使用合适的任何“编辑器”来生成合适的HTML标记元数据包 ...

  8. c/c++面试题(6)运算符重载详解

    1.操作符函数: 在特定条件下,编译器有能力把一个由操作数和操作符共同组成的表达式,解释为对 一个全局或成员函数的调用,该全局或成员函数被称为操作符函数.该全局或成员函数 被称为操作符函数.通过定义操 ...

  9. 64位Win7系统下vs2010调试无法连接oracle

    64位win7系统的Program Files (x86)路径中有括号,oracle不认识这样的路径,所以就出现不能连接数据库的问题.所以我们可以将vs2010的内部调试web服务器WebDev.We ...

  10. 绑定hosts

    测试过程中需绑定hosts.将测试环境IP绑定域名,输入域名即可连接到测试环境. 1  hosts文件地址:C:\WINDOWS\system32\drivers\etc 2  用记事本打开hosts ...