代码只能够过前面两个测试点,后面的代码全部RE
,输入数据10000 100栈溢出。
我写的递归该怎么优化?
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import static java.lang.Math.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String[] nums = in.readLine().split(" ");
int n = Integer.parseInt(nums[0]);
int k = Integer.parseInt(nums[1]);
int[] dp = new int[n + 1];
System.out.println(wayNumber(n,k,dp));
in.close();
}
static private int wayNumber(int n, int k, int[] dp) {
if (n == 0) {
return 1;
}
if (dp[n] != 0) {
return dp[n];
}
int sum = 0;
for (int i = 1; i <= min(k, n); i++) {
sum += wayNumber(n - i, k, dp);
if (sum >= 100003) {
sum %= 100003;
}
}
dp[n] = sum;
return sum;
}
}