如何删除在几个JAVA程序中由在线评委指出的运行时错误

时间:2017-12-13 04:37:46

标签: java

在向SPOJ和Codechef等在线评委提交我的解决方案时,我正在为一些项目多次获得NZEC。我注意到包含多个函数和类的程序中的这种行为。

有人可以建议我哪里出错吗?

问题:https://www.codechef.com/problems/FIRESC/

我的回答:https://www.codechef.com/viewsolution/16564688

请对程序进行更改并试用!

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

在"约束"下,它说:

  

1≤N≤100000(10 ^ 5)
  0≤M≤100000(10 ^ 5)

你的代码有这一行:

f.adj=new int[f.n][f.n];

但如果N为100000,则您尝试创建一个一亿整数的数组。当我尝试它时,我尝试创建数组时得到一个OutOfMemoryError。

您将不得不改变计算答案的方式,以便不使用这样一个可能很大的数组。

答案 1 :(得分:1)

如果N相对较大,f.adj=new int[f.n][f.n];初始化可能导致错误。分别为[0,100000]和[1,100000]的N和M个元素,最坏的情况是需要超​​过37 GB。

此外,例如,在未能检查输入是否有效的情况下发生错误;如果输入不是整数,t=sc.nextInt();将抛出InputMismatchException。不太了解程序如何执行以及实际错误本身使诊断变得冗长乏味。

作为旁注,使用有用名称命名变量是自动记录的好方法