当我向Spoj和Codechef等在线法官提交解决方案时,我会反复获得NZEC。我注意到包含超过1个功能和类的程序中的这种行为。
有人可以建议我出错的地方吗?
问题:https://www.codechef.com/problems/firesc/
我的答案:https://www.codechef.com/viewsolution/16564688
请更改程序并尝试!
任何帮助都将不胜感激!
在"约束"下,它说:
1≤n≤100000(10^5)
0≤m≤100000(10^5)
,您的代码具有此行:
f.adj=new int[f.n][f.n];
但是,如果N是100000,则您正在尝试使用亿美元的阵列创建一个阵列。当我尝试使用时,我在尝试创建数组时会得到一个Outofmemoryerror。
您将不得不更改计算答案的方式,以便不使用这种潜在的大数组。
如果n相对较大,则f.adj=new int[f.n][f.n];
初始化可能导致错误。[0,100000]和[1,100000]的n和m元素,最坏的情况将看到超过37 GB的情况。
另外,例如,错误在未能检查输入是否有效时发生错误。如果输入不是整数,则t=sc.nextInt();
会抛出InputMismatchException。对程序的执行方式不了解,而实际错误本身使其对诊断感到乏味。
作为旁注,具有有用名称的命名变量是自动文档的好方法