Получить все возможные комбинации символов в массиве

Обновить

November 2018

Просмотры

3.4k раз

5

У меня есть массив символов с [] [] с различными отображениями для каждого индекса. Например:

{'a', 'b', 'c', 'd', 'e', 'f' } {'g', 'h', 'i' }

Мне нужно, чтобы вернуть все возможные комбинации символов для этого массива в виде строки. Это означает, для приведенного выше массив символов, я должен вернуться: "AG", "ах", "ай", "BG", "Bh", "би", "CG", "ч", "CI", и т.д. . было бы легко сделать это для символьного массива только две вещи, как и выше, но если есть больше массивов, то я не знаю, что делать ... что я и прошу всех вас помочь мне! :)

1 ответы

10

Для двух массивов двух вложенных циклов должны сделать:

for (int i = 0 ; i != c[0].length ; i++) {
    for (int j = 0 ; j != c[1].length ; j++) {
        System.out.writeln(""+c[0][i]+c[1][j]);
    }
}

Для получения дополнительной вложенности вам нужно будет рекурсивным или эквивалентным стек на основе решения.

void combos(int pos, char[][] c, String soFar) {
    if (pos == c.length) {
         System.out.writeln(soFar);
         return;
    }
    for (int i = 0 ; i != c[pos].length ; i++) {
        combos(pos+1, c, soFar + c[pos][i]);
    }
}

Назовем эту рекурсивную функцию от вашего , main()как это:

combos(0, c, "");