Я пытался сгенерировать список всех возможных 4-х символьных строк, которые могли бы состоять из любого заданного набора символов. Я использовал функцию для генерации каждой комбинации из 4 символов из набора символов, но каждый символ используется только один раз. Мне нужны все возможные комбинации с использованием заданного набора символов, например:
String[] elements = {"a", "b", "c", "1", "2", "3"};
int[] indices;
CombinationGenerator x = new CombinationGenerator (elements.length, 4);
StringBuffer combination;
while (x.hasMore ()) {
combination = new StringBuffer ();
indices = x.getNext ();
for (int i = 0; i < indices.length; i++) {
combination.append (elements[indices[i]]);
}
System.out.println (combination.toString ());
}
Использование класса CombinationGenerator из здесь , это вернет каждую уникальную комбинацию из 4 символов, такую как:
'abcd' , 'abc1', 'acb2', 'acb1'
Но я хочу, чтобы каждая возможная строка могла быть создана с использованием данных символов. Например:
'aaaa', 'aaab', 'abc1', 'aac1', '11c2'
Я пробовал все рекурсивные методы и методы перестановки, которые мне удалось найти или придумать, но я не могу пойти дальше, чем генерировать все комбинации, как указано выше, а затем генерировать каждую перестановку каждой комбинации но я не могу понять, как создать набор комбинаций, используя повторяющиеся символы.
Любая помощь или даже теория о том, как это можно сделать, были бы полезны.