4.使用OJ的时候注意方法
d.在使用条件判断语句的时候可以简化语句
例如(简化两步):
if(top!=0){return 1;}else{reutrn 0}
return top!=0 ? true: false;
return top!=0;
c.注意使用两个文件的比对方法
b.冒泡容易出现内存溢出或超时,C++中有sort函数,类似快排算法,但要在头文件加上#include<algorithm>,效率较高。
a.可以通过提交结果发现自己的错误原因
3.自己电脑运行程序没有问题,但OJ上却wrong answer总是有错误的原因:
e.今天做了一个纸牌分堆的问题,答案是运行出来了,但是提交的时候有两个显示通过,其他三个通道无法通过,纠结半天,也从网上搜到正确答案对比也差不多,以为是自己的代码没有写错,可能是oj就是这样,但是后面过小会我想起来用比对软件比较,这才发现移动的时候应该用加号再赋值,直接赋值虽然答案对了,但是编译通不过。
d.今天提交一个排队打水的问题,也是最后一个没通过,显示运行错误,找了半天也不知道什么原因,后面在网上看到别人通过的代码,把原来定义数组的长度101改为1010就通过了,但是不是很理解。
还有一个问题,就是碰到了编译错误,后面在网上查找给我灵感--编译错误就是的程序语法有问题,编译器无法编译,。点击错误链接,发现是在C++中使用printf,一定要使用头文件,否则编译无法通过。
参考:https://www.cnblogs.com/phoenixfooldante/articles/4141813.html
c.今天提交了一个集合划分,总共有5个通道,其中4个通过了,最后一个没有通过,从网上找资料发现,定义的函数类型有问题,换成long long类型就可以了,之前定义的是int类型不能通过。虽然解决了,但是不太明白为什么。
b.首先,你提交上去评测,系统怎么可能只测试样例呢?如果提交上去,只测试样例,那你直接输出样例就过了。
系统里面,对这题,是存放了一些强大、尽量全面的测试数据的,你一点点小bug,很容易暴露出来。
a.错误出现的原因,也要按编程的水平来
阶段0:初学编程语言。
出错原因:40%大思路错误,30%小细节没考虑,30%代码里写错了一个或几个小地方。
解决办法:认真学完一门编程语言
阶段1:学完了编程语言,开始刷题
出错原因:15%大思路错误,25%小细节没考虑,60%代码里写错了一个小地方/语言的库函数等理解不到位导致写错。
解决办法:1、代码模块化。2、有意识的训练全面考虑能力。
阶段2:刷题量大了,有经验了
出错原因:50%甚至更多,是自己写错了一个小地方(随水平越高,虽然总出错越小,但这个比例会越大的。)
参考:https://www.zhihu.com/question/32228695
2.遇到都不懂的题目
a.一定要多读几遍,多读,多读
b.根据下面给的例子带入题目理解,通过具体的数能够更好地理解题目的意思。例如1008:K进制数,那个总数不是和的意思,是总数量的意思
c.不要怕演算,结合题目在草稿纸上多划多想。
1.分析题目
a.做OJ题目不要过分追求代码的健壮性,对于一些输入输出不用去判断(当然如果时间充裕也可以完善完善)。