Получение комбинации n-элементов из таблицы значений атрибутов

Моя проблема заключается в создании алгоритма для получения n-элементной комбинации значений атрибутов, которые я позже сравниваю с записями в файле. Я код в Java, а таблица значений атрибутов представлен как LinkedList 2 ]>> (конечно, я мог бы изменить это представление). Пример таблицы может выглядеть так:

(Ссылка) Пример таблицы

Для комбинации одного элемента достаточно ввести три вложенных для цикла петель, но как обрабатывать комбинацию n = элементов? Комбинации одних и тех же атрибутов и одинаковых значений атрибутов не допускаются.

1 ответ

Если вы хотите n вложенных циклов, вы можете использовать рекурсию.

Тем не менее, более простой способ справиться с этим может быть просто циклическим:

LinkedList<linkedlist<string>> L;
// Init L

// begin looping
int N = 1;
for(LinkedList<string> l in L)
 N *= l.length;
for(int i = 0; i < N; i++){
 int[] chooseWhich = new int[L.length];
 for(int j = 0; j < L.length; j++){
 chooseWhich[j] = i % L[j].length;
 i /= L[j].length;
 }
 // at this stage, you have the i-th column chosen to be chooseWhich[i]
 // do whatever you want just as you have nested n loops
}
</string></linkedlist<string>

Кстати, я только что понял, что LinkedList не имеет длины, но вы много меняете для использования массива. Или вы можете сохранить длину связанного списка где-то самостоятельно.

licensed under cc by-sa 3.0 with attribution.