If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

Enjoy an ad free experience by logging in. Not a member yet? Register.

using backtracking to print all possible orders of numbers

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:

Hmm I dont think your recursion is correct - I found this example which I feel you should perhaps study - click the link and have a read of the BackKnap.rtf link which is basically a Java implementation of what you want to do - try running it - if it operates as you want, split it apart and figure out where your code differs to theirs!