我在一所学校分配工作,我有以下问题:需要帮助伤点在我的Java代码
我给出了一些枝(用不同的或相似的长度),和我负责找取出形成给定长度的较长棒所需的最小棒数量。
例如, 给定6根长度为1,1,1,1,1,3的长度为5的长棒,输出为3. 注意:棒不能重复使用。
但是,如果不可能形成给定长度,则输出-1。 例如, 给定3个长度为1,2,6的棒,为了形成长度为5的较长棒,输出将是-1。
我有以下代码,它已通过所有公开测试用例。但是,我没有通过私人测试案例,我无法弄清楚我的错误。
这里是我的代码:
import java.util.*;
class Result {
static int min = 100000;
public static int solve(int pos, int currSum, int len, int numStk) {
// implementation
for (int i=1; i<=Stick.data.length - pos; i++){
if (currSum > len){
continue;
}
else if (currSum < len){
if (pos+i >= Stick.data.length){
break;
}
else{
solve(pos+i,currSum+Stick.data[pos+i], len, numStk+1);
}
}
else if (currSum == len){
if (numStk < min){
min = numStk;
}
}
}
return min;
}
}
class Stick {
static int[] data;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int sticks = sc.nextInt();
data = new int[sticks];
int len = sc.nextInt();
for (int i=0; i<sticks; i++){
data[i] = sc.nextInt();
}
for (int i=0; i<sticks; i++){
Result.solve(i,0,len,1);
}
if (Result.min == 100000){
System.out.println(-1);
} else {
System.out.println(Result.min-1);
}
}
}
请提供期望的结果,实际结果以及您为调试代码所采取的步骤。 – 2014-10-27 15:14:00
什么是“私人测试用例”? – 2014-10-27 15:14:27
**“但是,我没有通过私人测试......”** - 那会是什么,到底是什么? – azurefrog 2014-10-27 15:14:34