Перебор всех возможных вариантов на основании ответов

Нужно посчитать общее количество комбинаций и посторить все возможные последовательности ответов на основании массива вопросов и ответов к ниму. по сути вывести все возможные варианты вопрос->ответ на основании выбора. какой алгоритм для этого подойдет лучше всего ?

    [
   {
      "id":"x1",
      "question":"question 1 ?",
      "answers":[
         {
            "value":"yes",
            "nextId":"x2"
         },
         {
            "value":"no",
            "nextId":"x3"
         }
      ]
   },
   {
      "id":"x2",
      "question":"question 2 ?",
      "answers":[
         {
            "value":"yes",
            "nextId":"x4"
         },
         {
            "value":"no",
            "nextId":"x5"
         }
      ]
   },
   {
      "id":"x3",
      "question":"question 3 ?",
      "answers":[
         {
            "value":"yes",
            "nextId":"x4"
         },
         {
            "value":"no",
            "nextId":null
         }
      ]
   },
   {
      "id":"x4",
      "question":"question 4 ?",
      "answers":[
         {
            "value":"yes",
            "nextId":null
         },
         {
            "value":"no",
            "nextId":null
         }
      ]
   },
   {
      "id":"x5",
      "question":"question 5 ?",
      "answers":[
         {
            "value":"yes",
            "nextId":null
         },
         {
            "value":"no",
            "nextId":null
         }
      ]
   }
]

Ответы (1 шт):

Автор решения: MrShnaider

Дан массив из одинаковых JSON'ов. В каждом из них есть строка с вопросом и массив ответов. Нужно будет два цикла: первый будет проходиться по массиву вопросов, второй (вложенный) для каждого вопроса будет проходиться по массиву ответов. Получается обычный проход по массиву, со вложенным циклом:

для каждого json в массиве:
    для каждого ответа в json:
        json.вопрос + ответ

Сложность примерно O(n*m) где n - кол-во вопросов, m - среднее кол-во ответов на один вопрос

→ Ссылка