variaciones unicoos repeticion permutaciones permutacion letras generar escribir con combinatoria combinaciones java algorithm recursion combinatorics

java - permutaciones - unicoos variaciones sin repeticion



Código de variaciones con repetición(combinatoria)? (4)

¿Alguien tiene código Java para generar todas las VARIACIONES CON REPETICIÓN?

Hay muchos ejemplos de permutación y combinación disponibles, y las variaciones deben ser las más fáciles ... Se siente estúpido perder el tiempo para reinventar la rueda (debe haber muchos códigos escritos para esto).

Un ejemplo de VARIACIONES CON REPETICIÓN podría ser así:

(tupletSize=3, input= A, B) AAA, AAB, ABA, BAA, ABB, BAB, BBA, BBB

¡Gracias!


Esto funciona como está, y es más fácil para ti estudiar.

public class Main { public static void main(String args[]) { brute("AB", 3, new StringBuffer()); } static void brute(String input, int depth, StringBuffer output) { if (depth == 0) { System.out.println(output); } else { for (int i = 0; i < input.length(); i++) { output.append(input.charAt(i)); brute(input, depth - 1, output); output.deleteCharAt(output.length() - 1); } } } }



public class Main { public static void main(String[] args) throws IOException { LinkedList<char[]> items = new LinkedList<char[]>(); char[] item = new char[3]; char[] input = {''A'', ''B''}; rep(items, input, item, 0); for (char[] rep : items) { System.out.println(rep); } } private static void rep(LinkedList<char[]> reps, char[] input, char[] item, int count){ if (count < item.length){ for (int i = 0; i < input.length; i++) { item[count] = input[i]; rep(reps, input, item, count+1); } }else{ reps.add(item.clone()); } } }

produce el siguiente resultado: AAA AAB ABA ABB BAA BAB BBA BBB

ten cuidado con los desbordamientos de pila con tupleSize grande. Los algoritmos recursivos (como este) suelen ser más lentos que las versiones iterativas, pero son muy útiles para codificar.