* **ACM错误总结

来源:互联网 发布:centos selenium 编辑:程序博客网 时间:2024/06/04 20:42

绝大部分是个人经验


能正常运行情况(正常出现黑框):

Wrong Answer(WA):

算法上就出了问题,样例都可能不过,或者漏了什么必要步骤
考虑下特殊情况或捕捉题目隐含条件(比如数据范围)
实在想不出问题就多测试自己想的样例,或者思考题目时怎样得到样例结果的过程,往往会想到解决的办法

Presentation Error(PE):

格式错误(但答案正确)
通常是因为输多了或少了空格、换行符之类
再读一遍题目就不难发现(每次输出随手打\n)
输出空行情况:

hdu1059这种情况只要在输出的最后一行多打一个换行符,就变成\n\n
②Output a blank line between two cases.这种情况输出的空行是在输入数据后,而且要用到tag,第一个样例不需要空行

Time Limit Exceeded(TLE)

超时
算法太慢
优化算法咯~

Memory Limit Exceeded(MLE)

超内存
爆内存了,通常是数组什么的开太大了吧

Output Limit Exceeded(OLE)

输出超量
输多了东西,看看是不是自己测试时候用的代码没注释掉…

Compile Error(CE)

编译错误
语法有错误,编译不了
试过没有强制转换出错

Runtime Error(RE)

运行时错误,运行一半就崩了
①除以零
②数组越界:int a[3]; a[10000000]=10;
③指针越界:int * p; p=(int )malloc(5 sizeof(int)); *(p+1000000)=10;
④使用已经释放的空间:int * p; p=(int )malloc(5 sizeof(int));free(p); *p=10;
⑤数组开得太大,超出了栈的范围,造成栈溢出:int a[100000000];


不能正常运行情况(一run就崩):

①scanf后面的变量不是地址,没加&
②运行后自动弹出这个乱七八糟的页面…通常是sort出错,而且还是sort里的cmp函数
sort出问题
③野指针…一直不敢用指针…


经验总结:

0.尽量不要用float,直接用double
1.开数组不要开到和题目刚刚好,还要再大一点
2.多次连续读入%c会可能读入多个换行符,可以用字符串%s读入,然后取string[0]
3.多留意定义变量的位置和赋值还有初始化的位置是否正确
4.输出顺手打个\n
5.留意算法中有没有两个变量相乘或相加爆了数据类型,要强制转换
6.数组开大于6个0就要放到外面
7.定义变量记得初始化
8.尽量做乘法,除法也可以变乘法,实在没办法要多留意小数和四舍五入,还有除零
9.题目说integer,不一定就是int型,模棱两可的保险点用long long

入门尚短,长期补充~

最后附上别人的总结
http://blog.csdn.net/consciousman/article/details/51100559

0 0
原创粉丝点击