rendered paste body static boolean backTrack(final int divisors[], final int divisorCount, int currentIndex, int value) {
if(value>=divisors[currentIndex]) {
if (0==(value-=divisors[currentIndex])) {
return true;
}
if(currentIndex+1<divisorCount && backTrack(divisors,divisorCount,currentIndex+1,value)) {
return true;
}
currentIndex+=divisors[currentIndex];
}
if(currentIndex+1<divisorCount && backTrack(divisors,divisorCount,currentIndex+1,value)) {
return true;
}
return false;
}
static boolean backTrack(Integer a[],int k,int n) {
if(n>=a[k]) {
if(0==(n-=a[k])) return true;
if(k+1<a.length && backTrack(a,k+1,n)) return true;
n+=a[k];
}
if(k+1<a.length && backTrack(a,k+1,n)) return true;
return false;
}