Yesterday I asked about How to find the maximum possible sum of numbers in arrays drawn from a unique array index and I was advise to use permutation - it worked well, but I wasn't aware that my arrays are much bigger than I assumed. I have arrays as big as [16] - so I have 16! possibilites...what could I use instead of permutation to get maximum possible sum?
edit. here is my arrays:
public static ArrayList<Double[]> tempArrayCreator() {
ArrayList<Double[]> tempArray = new ArrayList<>();
Double[] l1 = { 9.0, 13.5, 9.0, 9.0, 9.0, 13.5, 9.0, 13.5, 13.5, 13.5,
9.0, 13.5, 13.5, 9.0, 13.5, 9.0 };
Double[] l2 = { 6.0, 6.0, 13.5, 6.0, 9.0, 6.0, 6.0, 6.0, 6.0, 9.0, 6.0,
6.0, 9.0, 9.0, 6.0, 9.0 };
Double[] l3 = { 22.5, 22.5, 14.0, 22.5, 14.0, 22.5, 22.5, 22.5, 22.5,
21.0, 22.5, 22.5, 21.0, 14.0, 22.5, 14.0 };
Double[] l4 = { 6.0, 6.0, 7.0, 6.0, 7.0, 6.0, 6.0, 6.0, 6.0, 7.0, 9.0,
6.0, 7.0, 7.0, 6.0, 7.0 };
Double[] l5 = { 4.5, 6.75, 6.0, 4.5, 6.0, 6.75, 4.5, 4.5, 6.75, 9.0,
4.5, 6.75, 9.0, 6.0, 6.75, 6.0 };
Double[] l6 = { 6.0, 9.0, 5.0, 6.0, 5.0, 9.0, 6.0, 6.0, 9.0, 7.5, 6.0,
9.0, 7.5, 5.0, 9.0, 5.0 };
Double[] l7 = { 13.5, 13.5, 4.0, 13.5, 4.0, 13.5, 13.5, 13.5, 13.5,
6.0, 13.5, 13.5, 4.0, 4.0, 13.5, 4.0 };
Double[] l8 = { 4.5, 4.5, 4.0, 4.5, 4.0, 4.5, 4.5, 4.5, 4.5, 4.0, 4.5,
4.5, 6.0, 4.0, 4.5, 4.0 };
Double[] l9 = { 10.5, 10.5, 10.0, 10.5, 10.0, 10.5, 10.5, 10.5, 10.5,
10.0, 10.5, 10.5, 10.0, 10.0, 10.5, 10.0 };
Double[] l10 = { 11.25, 11.25, 3.0, 11.25, 3.0, 11.25, 11.25, 11.25,
11.25, 3.0, 11.25, 11.25, 3.0, 3.0, 11.25, 3.0 };
Double[] l11 = { 7.5, 11.25, 10.0, 7.5, 10.0, 11.25, 7.5, 11.25, 11.25,
15.0, 7.5, 11.25, 15.0, 10.0, 11.25, 10.0 };
Double[] l12 = { 7.5, 7.5, 12.0, 7.5, 8.0, 7.5, 7.5, 7.5, 7.5, 8.0,
7.5, 7.5, 8.0, 8.0, 7.5, 8.0 };
Double[] l13 = { 13.5, 13.5, 6.0, 13.5, 6.0, 13.5, 13.5, 13.5, 13.5,
9.0, 13.5, 13.5, 9.0, 6.0, 13.5, 6.0 };
Double[] l14 = { 9.0, 9.0, 8.0, 9.0, 8.0, 9.0, 9.0, 9.0, 9.0, 12.0,
9.0, 9.0, 12.0, 8.0, 9.0, 8.0 };
Double[] l15 = { 7.5, 7.5, 12.0, 7.5, 8.0, 7.5, 7.5, 7.5, 7.5, 8.0,
7.5, 7.5, 8.0, 8.0, 7.5, 8.0 };
Double[] l16 = { 18.0, 18.0, 10.0, 18.0, 10.0, 18.0, 18.0, 18.0, 18.0,
15.0, 18.0, 18.0, 15.0, 10.0, 18.0, 10.0 };
tempArray.add(l1);
tempArray.add(l2);
tempArray.add(l3);
tempArray.add(l4);
tempArray.add(l5);
tempArray.add(l6);
tempArray.add(l7);
tempArray.add(l8);
tempArray.add(l9);
tempArray.add(l10);
tempArray.add(l11);
tempArray.add(l12);
tempArray.add(l13);
tempArray.add(l14);
tempArray.add(l15);
tempArray.add(l16);
return tempArray;
}