hi there,
i've started working on the knapsack problem. i have an array of a given number of items, the robber can only steal up to a limited weight. so i thought i would create an array of the same length that holds only '1' or '0'. 1-stolen, 0-left.
the method i have here is supposed to print all possible combinations of '0' and '1' in the length of the array of items. if there are 2 items that can be stolen i would create an array of 2 that will hold these numbers:
00
01
10
11
which represents all the possible cases
so here's my code
PHP Code:
public class Backtracking {
//this method prints all the possible combinations of the digits '1' and '0'
//in a given number of digits (which is order.length)
//@param order - the given array of int. for now only its size matters
//@param index - the method will work on order[index]
//@param newValuse - either '1' or '0'
private static void orders(int[] order, int index, int newValue) {
if (index==order.length) {
//when the number of digits in the current number
//reaches order.length print it i.e. if order.length is 3
//and we have '000' or '001' print it
System.out.println("entered end condition");
for (int i=0; i<=index-1; i++) {
System.out.print(order[i]+" ");
}
System.out.println();
}
else {
System.out.println("entered recursion at index "+index);
System.out.println("input "+newValue);
order[index]=newValue;
index+=1;
orders(order, index, 0);
System.out.println("changing value to 1 at index "+index);
orders(order, index, 1);
}
}
public static void main (String[] args) {
int[] weights = {3,3};
orders(weights, 0, 0);
}
}
it doesn't give me all possible combinations. if i called the method from main using the parameter newValue=0 it will only print the numbers starting with 0.
also it prints everything twice
here's my output:
PHP Code:
entered recursion at index 0
input 0
entered recursion at index 1
input 0
entered end condition
0 0
changing value to 1 at index 2
entered end condition
0 0
changing value to 1 at index 1
entered recursion at index 1
input 1
entered end condition
0 1
changing value to 1 at index 2
entered end condition
0 1
hope i was clear enough
how can i make it right? thank you!