什么是OJ,是做什么的?

导读:什么是OJ,是做什么的? 常见的ACM、蓝桥杯、甚至NOIP等主流比赛中,无论实时出结果还是赛后统一评测,几乎都是以OJ作为评测系统的,即非人工主导,机器自主评测。这就是OJ - 全称

什么是OJ,是做什么的?

常见的ACM、蓝桥杯、甚至NOIP等主流比赛中,无论实时出结果还是赛后统一评测,几乎都是以OJ作为评测系统的,即非人工主导,机器自主评测。这就是OJ -  全称为OnlineJudge,即在线评测系统

由于程序设计类比赛,不仅仅要验证程序的正确与否,还要进行语法编译检测、内存、时间的检测等等,人工也很难做到,因此也只能使用OJ评测,

OJ的工作原理

OJ采用后台黑箱测试的原理,即测试比对结果的方式,而测试数据非常全面,涵盖各种特殊情况。并且在结果的比对上也不放过一个空格和回车,这就要求程序员要有非常严谨的思维。因此程序中一旦有多余的输出信息,都将认为答案错误。

常见的问题例如,新手学习编程常常会写:

1
printf("Please input:");

等等类似的语句,殊不知程序在交由OJ评测后,这一行输出的内容"Please input:"也会作为程序的答案一部分进行比对,结果可想而知。即便答案是对的,也逃脱不了0分未通过的结果。

正常一道题目的题面信息,我们会看到题目描述、输入格式、输出格式、样例输入、样例输出等几部分。

其中的样例输入和输出就是用来让你验证理解题意的例子,并非只处理这组数据(那题也太简单了),真正提交程序后的评测,可能会有十组甚至二十组、五十组的数据等着程序比对,例如a+b的问题,测试数据很可能不仅仅测1+1=2的结果,还会测测99+1=100这种有进位的数据,还会测20 0000 0000+10 0000 0000 = 30 0000 0000 这样的超int范围数据等等,大量常规数据、特殊值、边界值等着你,一旦有一组数据没有通过。ACM这样的比赛就会错误,蓝桥杯这样的比赛只能拿部分分数了

市面上常见的OJ有很多,比如北大的POJ,杭电的HOJ,以及国外的UVA等等,虽然ACM、蓝桥杯、NOIP不同的比赛的题目基本是相通的,都可以刷题使用,但ACM类的OJ通常是英文居多,其余比赛中文居多。难度定位也略有不同。

例如Dotcpp,是面向编程初学者,兼顾算法数据结构的轻量级中文OJ

你也想0元试听小码王编程课程吗?
填写信息免费预约
免责申明:以上展示内容来源于合作媒体、企业机构、网友提供或网络收集整理,版权争议与本站无关,文章涉及见解与观点不代表小码王官方立场,请读者仅做参考。本文标题:什么是OJ,是做什么的?,本文链接:https://www.xiaomawang.cn/help/67815.html;欢迎转载,转载请说明出处。若您认为本文侵犯了您的版权信息,或您发现该内容有任何涉及有违公德、触犯法律等违法信息,请您立即通过邮件(邮箱号:)联系我们及时修正或删除。
校区接待前厅
校区太空走廊
校区教室环境
校区多功能教室
模板文件不存在: ./template/pc/footerihelp.htm