Я работаю над проектом для моей диссертации. На самом деле я не слишком много занимался кодированием и был бы признателен за помощь в решении следующей проблемы, которую я пытаюсь решить:
Изначально я создал список продуктов. Каждый продукт p имеет некоторые атрибуты, один из которых логический, называемый isCool
. Я хочу получить все варианты этого списка с продуктами. Поэтому я создал рекурсивную функцию, которая возвращает все перестановки p. Так что, если у меня есть 3 продукта, я получу 3! = 6 списков, потому что есть 6 возможных перестановок.
Теперь я хочу, чтобы рекурсивная функция принимала только те продукты, у которых атрибут isCool == false
. Как я могу это сделать? Код прилагается. Кто-нибудь может помочь?
public class PermutateArray {
public List<List<Product>> permute (Product[] p) {
List<List<Product>> list = new ArrayList<>();
permuteHelper(list, new ArrayList<>(), p);
return list;
}
private void permuteHelper(List<List<Product>> list, List<Product> resultList, Product[] p) {
// Base case
if (resultList.size() == p.length) {
// list.add(new ArrayList<>(resultList));
//Startknoten ans Ende anfügen
List<Product> target = new ArrayList<>(resultList);
target.add(resultList.get(0));
list.add(target);
} else {
for (int i = 0; i < p.length; i++) {
if (resultList.contains(p[i])) {
continue;
}
resultList.add(p[i]);
permuteHelper(list, resultList, p);
resultList.remove(resultList.size() - 1);
}
}
}
}