怎样排查答案错误(WA)

· · 个人记录

当你的程序通过编译之后,往往也会面临各种各样的答案错误。这里给大家介绍一些常见的,查找答案错误的方法。

首先,如果你输出的答案特别奇怪,比如一直都是 0,或者输出了一个很大的数之类的,一般有下面几种情况:

如果上面几种情况都查过了,或者你的答案看起来比较正常,那么可能是程序逻辑有问题。你可以在程序中间加一些 printf,把你修改过的变量打出来,看看和你想的是否一样。

如果你通过了样例,但还是出错了,这个时候你就要仔细读题了。要排查:

除了题目给的测试数据之外,你也可以自己在题目给的数据大小内制造一些你能看出正确性数据,比如:

你甚至可以写一个验证程序来验算,证程序有时候会比真实程序简单。比如说一个程序要给你 100000 个数,问你 37 在里面的第几个。你提交的程序可能要写个循环,但是你的验证程序只用判断 if(a[ans] == 37) 就行了。(如果 ans 是原程序的结果的话)

当然,具体的经验还是要通过多做题、熟练掌握语言、算法和查错的技巧。