常见问题及解答
如果您在使用过程中发现什么问题或者有什么建议,请点击这儿告诉管理员。
View English version of F.A.Q
--------------------------------------------------------------------------------
Q: Online Judge(以下简称OJ)支持哪些语言?
A: 目前为止,HDOJ支持C、C++、Pascal和Java四种语言。
--------------------------------------------------------------------------------
Q: 有什么条件判断我的程序是在OJ上运行吗?
A: 您可以使用ONLINE_JUDGE这个条件定义。下面是使用举例:
C/C++
#ifdef ONLINE_JUDGE
此间的语句只有在OJ上的才会被编译
#endif
Pascal
{$IFDEF ONLINE_JUDGE}
此间的语句只有在OJ上的才会被编译
{$ENDIF}
--------------------------------------------------------------------------------
Q: 在OJ上我能使用哪些输入输出?
A: HDOJ上只能使用标准输入输出,您的程序不允许操作文件,否则将被判为'Runtime Error'或者'Wrong Answer'。
比如要通过1000这个题目,您可以使用以下几种形式的程序:
C++ 代码:
#include
using namespace std;
int main()
{
int i, j;
while(cin >> i >> j)
cout << i + j << endl;
return 0;
}
C 代码:
#include
int main()
{
int i, j;
while(scanf("%d%d", &;i, &;j) == 2)
printf("%d\n", i + j);
return 0;
}
Pascal 代码:
PROGRAM p1000(intput, output);
VAR i, j : INTEGER;
BEGIN
WHILE NOT EOF(input) DO
BEGIN
Readln(i, j);
Writeln(i + j);
END;
END.
Java 代码:
import java.util.*;
class Sum
{
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
int a, b;
while(cin.hasNextInt())
{
a = cin.nextInt();
b = cin.nextInt();
System.out.println(a + b);
}
}
}
或者
import java.util.*;
public class Main
{
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
int a, b;
while(cin.hasNextInt())
{
a = cin.nextInt();
b = cin.nextInt();
System.out.println(a + b);
}
}
}
关于Java的特别说明:
1、HDOJ上使用的是JDK 1.50 Update 8多国语言版。
2、您提交的Java程序必须是单个文件的,也就是所有的类必须写在一个文件里。但是必须有一个类的里面必须包含一个名字为'main'的静态方法(函数),这个方法是程序的入口。
3、如果您将主类申明为public公有类,则这个类名必须是'Main'(注意大小写,请参看第二个程序)。
4、每个题目对于Java程序的时间和内存限制一般都会放宽的。但是即便如此,有些题目还是不适合用Java来解,对于这些题目我们建议您使用编译性语言来解。
---------
-----------------------------------------------------------------------
Q: 我提交了程序,OJ回复的那些评判结果是什么意思?
A: 下面是常见的OJ评判结果以及它们表示的意思:
Queuing : 提交太多了,OJ无法在第一时间给所有提交以评判结果,后面提交的程序将暂时处于排队状态等待OJ的评判。不过这个过程一般不会很长。
Compiling : 您提交的代码正在被编译。
Running : 您的程序正在OJ上运行。
Judging : OJ正在检查您程序的输出是否正确。
Accepted (AC) : 您的程序是正确的,恭喜!
Presentation Error (PE) : 虽然您的程序貌似输出了正确的结果,但是这个结果的格式有点问题。请检查程序的输出是否多了或者少了空格(' ')、制表符('\t')或者换行符('\n')。
Wrong Answer (WA) : 输出结果错,这个一般认为是算法有问题。
Runtime Error (RE) : 运行时错误,这个一般是程序在运行期间执行了非法的操作造成的。以下列出常见的错误类型:
ACCESS_VIOLATION 您的程序想从一些非法的地址空间读取或向其中写入内容。一般例如指针、数组下标越界都会造成这个错误的。
ARRAY_BOUNDS_EXCEEDED 您的