Получить все возможные комбинации символов в массиве - PullRequest
5 голосов
/ 01 марта 2012

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

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

Мне нужно вернуть все возможные комбинации символов для этого массива в виде строки. Это значение для вышеуказанного массива символов я должен вернуть: "ag", "ah", "ai", "bg", "bh", "bi", "cg", "ch", "ci" и т. д. Было бы легко сделать это для массива символов только из двух вещей, как указано выше, но если есть больше массивов, то я не знаю, что делать ... Вот с чем я вас всех прошу помочь! :)

1 Ответ

10 голосов
/ 01 марта 2012

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

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, "");
...