从零开始写OJ---Special Judge
来源:互联网 发布:java大牛简历 编辑:程序博客网 时间:2024/05/16 15:42
OJ平台可以接受用户提交的代码并运行,根据对比运行结果来判断正确与否的。但是很多时候,一个问题并没有一个确切的解,比如说数独,给你一个9*9的方格,要求你用数字1-9来填充,横竖斜都不能有相同,很明显解法并非只有一种。
那如果有这样的题目,要怎样在OJ上进行评测呢?这就要用到Special Judge了。顾名思义,SPJ的题目会被特别的判定,只要用户提交代码的输出满足一定的要求,就会被判定为正确。
SPJ的使用范围是非常广泛的,毕竟这个世界上大部分的问题,还是有很多答案的,即使是在OJ上也是一样。很多OJ是支持special judge的,我们要写的这个评测姬也不例外的要支持。
为了能够写出一个special judge的评测姬,我们需要先明确SPJ的原理和流程。
对于每个需要spj的题目,我们都要提供一个spj程序,这个程序应该读取标准输入数据、标准输出数据、用户输出数据,然后根据这三个数据来进行对结果的判断,spj程序的输出将会作为此次评测的提示返回给用户。根据这个流程,我敲了一个我的special judge所需的特判程序模板。
#include <iostream>#include <fstream>#define TRUE 0#define FALSE 1#define ERR 2using namespace std;int main(int argc, char * argv[]){ if (argc < 4) { cout << "args error" << endl; return ERR; } ifstream std_in(argv[1]); ifstream std_out(argv[2]); ifstream user_out(argv[3]); /* special judge start */ int n; user_out >> n; if (n < 128) { cout << "太小了" << endl; return FALSE; } else if (n > 256) { cout << "太大了" << endl; return FALSE; } /* special judge end */ return TRUE;}
spj程序从args中获得要打开的文件路径,自行打开文件进行评测,这个评测程序是用来判断用户的输出是否在(128, 256)之间的,如果用户输出错误,评测系统就会输出相应的提示。spj程序由评测姬程序fork执行,通过管道获取spj的输出,通过返回值来判断是否正确。
这里是我的评测姬的github地址,虽然现在只有个demo,还没能完全整合起来……
阅读全文
0 0
- 从零开始写OJ---Special Judge
- hust OJ如何写一个special judge
- 从零开始写OJ
- Special Special Judge III ZOJ
- coj 1344: Special Judge
- Special Judge Ⅰ
- Special Judge Ⅱ
- zoj3411-Special Special Judge-高精度dp
- 【教程】如何正确的写一个Lemon/Cena的SPJ(special judge)
- 1721. Gray code[Special judge]
- 1721. Gray code[Special judge]
- [sicily]1151. 魔板[Special judge]
- [sicily]1151. 魔板[Special judge]
- 简单魔板[Special judge]
- 【POI2001】和平委员会(Special Judge)
- SDUT 3919 Special Judge Ⅰ
- SDUT 3920 Special Judge Ⅱ
- SDUT 3921 Special Judge Ⅲ
- AJAX小案例:动态搜索提示(仿百度)
- c++控制台阻塞+多线程聊天室
- 如何用Python进行大数据挖掘和分析
- Codeforces 280 C. Game on Tree (概率与期望)
- 简单易用的MongoDB
- 从零开始写OJ---Special Judge
- 利用指针修改值
- 测试方向随笔
- mamp pro 4.1破解版
- 替代恐慌你有吗?程序员会被深度学习技术淘汰吗?
- 懂商业的技术合伙人(14):使用HTML5开发App客户端,HTML5+和MUI框架基本介绍
- 数据实体转换工具类
- Myeclipse报错:“Versions of Spring facet could not be detected”的解决方法
- 快速入门系列--NOSQL--05Redis也木有那么“高富帅”