hacker earth也有类似的编码问题。挑战现在结束。我现在没有这个问题,但是我的代码看起来是这样的。我通过了测试用例,但是我的代码没有被接受,因为输入太多导致了这个错误。
我已经写了以下代码。
import java.util.*;
class TripleStep{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int n=10000;
long[] memo=new long[n+1];
Arrays.fill(memo,-1);
long ans=StairOpr(n,memo);
Arrays.fill(memo,-1);
System.out.println(ans);
}
public static long StairOpr(int n,long[] memo){
if(n<0){
return 0;
}
else if(n==0){
return 1;
}
else if(n==1){
return 2;
}
else if(n==2){
return 3;
}
else if(memo[n]>-1){
return memo[n];
}
else
memo[n]= (StairOpr(n-1,memo)%1000000007+StairOpr(n-2,memo)%1000000007+StairOpr(n-3,memo)%1000000007+n*n*(n+1)%1000000007)%1000000007;
return memo[n];
}
}
代码给出了输入值10000的以下错误。
Exception in thread "main" java.lang.StackOverflowError
at TripleStep.StairOpr(TripleStep.java:31)
at TripleStep.StairOpr(TripleStep.java:31)
原因是什么?解决办法是什么?由于我写了动态编程代码,但由于错误,答案没有提交,我面临拒绝。