Как создать несколько списков из комбинаций между некоторыми элементами списка списков (в Java или C) - PullRequest
1 голос
/ 17 мая 2019

Я работаю с проприетарным языком, он похож на java или C. У меня есть коллекция элементов, некоторые из которых тоже являются коллекциями.Я хочу создать варианты общей коллекции, но я не знаю, как это сделать.

Мне просто нужно общее объяснение алгоритма, я думаю, что в некоторых языках, таких как python, это может быть очень легко с помощью инструментов итерации, но я должен реализовать решение вручную.Я думаю, может быть, я должен использовать рекурсию, но я не уверен.Я ожидаю, что у меня будет не более 4 или 5 встроенных списков, каждый из которых содержит 3 или 4 элемента, поэтому я не думаю, что у меня возникнут проблемы с памятью.

input:

{ [NP, NP_pl] , [NP, NP_pl] , VPa, VPa, Sa, [S, S_nm, S_ws] }

ожидаемые результаты:

{ NP, NP, VPa, VPa, Sa, S}
{ NP, NP, VPa, VPa, Sa, S_nm}
{ NP, NP, VPa, VPa, Sa, S_ws}

{ NP_pl, NP, VPa, VPa, Sa, S}
{ NP_pl, NP, VPa, VPa, Sa, S_nm}
{ NP_pl, NP, VPa, VPa, Sa, S_ws}

{ NP, NP_pl, VPa, VPa, Sa, S}
{ NP, NP_pl, VPa, VPa, Sa, S_nm}
{ NP, NP_pl, VPa, VPa, Sa, S_ws}

{ NP_pl, NP_pl, VPa, VPa, Sa, S}
{ NP_pl, NP_pl, VPa, VPa, Sa, S_nm}
{ NP_pl, NP_pl, VPa, VPa, Sa, S_ws}

1 Ответ

0 голосов
/ 18 мая 2019

Существует страница с реализациями на многих языках: Декартово произведение .Один из них может быть даже ближе к этому проприетарному языку.

И да, вам нужна рекурсия (с рекурсией все намного проще).

...