ACM比赛用的提交和评判软件谁有,或者谁能详细介绍下这个流程?能发个软件给我吗?
发布网友
发布时间:2022-04-29 23:04
我来回答
共2个回答
热心网友
时间:2023-10-10 02:53
本系统使用了mysql数据库,所以需要linux系统上安装有mysql,并安装了mysql的相关编程接口。
由于这些程序是从linux系统上直接复制过来的,所以,由于行尾问题,在windows记事本打开时会发现它没有换行。。
这里发的程序只是C++的后台程序,还有一些网页程序,用来做界面,没有发上来。
好,下面进入正题:
一、这里有三个cpp
一个是server.cpp,这个是一个后台服务的程序,我让它一直在后台运行,并监听一个端口,当php端需要判题时,就把源代码写到指定位置,然后,发一个连接到这个端口。这时,server程序就会产生一个进程来处理这次判题事件。
第二个是:equal.cpp,这个是判断生成的文件与答案是否相同的一个程序。
第三个是:judge.cpp,这个才是重头戏,它包含了其它的一堆头文件,真正的判题程序。
二、几个.h文件
1、db.h是数据库操作类
2、log.h是写系统日志的函数
3、run.h是运行状态信息的类
4、problem.h是题目信息类
5、ExeRunner.h是ExeRunner类的头文件,一个最重要的类,主要是用来运行一个载入并运行其它的程序的。而且包含了监视功能。
6、mylib.h是我很久以前写的一个我自己的库,现在看起来挺弱智的,不过,当时确实有好几个地方都用到了它。
7、disabled_syscall.h是来标识哪些系统调用可用,哪些不可用的。这个头文件是网上找的。
三、另外的那个RunLog是系统日志。不是源代码。
#include"judger.h"
int main(int argc,char**argv)
{
if (argc!=2) {WriteLog("调用判题程序时参数太少");return -1;}
WriteLog(string("开始判断,本次运行的运行号为:")+argv[1]);
Judger judger(stoi(argv[1]));
judger.Judge();
}
参考资料:出自一个人写的OJ
来自:求助得到的回答
热心网友
时间:2023-10-10 02:54
提交后
OJ后台运行你的程序
并自动输入测试数据
然后把你程序输出结果和标准结果逐字符的比较
如果完全一样就Accepted
如果只是' ' tab' '\n'字符的差距 就Presentation Error
其它基本就Wrong Anwser