2012-03-01 24 views
5

Tengo una matriz de caracteres c [] [] con diferentes asignaciones para cada índice. Por ejemplo:Obtenga todas las combinaciones posibles de caracteres en una matriz

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

necesito devolver todas las combinaciones posibles de caracteres para esta matriz como una cadena. Ese significado, para la matriz de caracteres anterior, debería devolver: "ag", "ah", "ai", "bg", "bh", "bi", "cg", "ch", "ci" , etc. Sería fácil hacer esto para una matriz de caracteres de solo dos cosas como la anterior, pero si hay más matrices, entonces no sé qué hacer ... ¿Qué es lo que les estoy pidiendo a todos? ¡ayúdame con! :)

+0

la salida http://stackoverflow.com/questions/2920315/permutation-of-array – JKirchartz

+0

Qué profundidad tiene la matriz? Es decir, ¿cuántas dimensiones? –

Respuesta

10

Durante dos matrices de dos bucles anidados debe hacer:

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]); 
    } 
} 

Para mayor anidación se necesitaría una recursiva o una solución a base de pila equivalente.

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]); 
    } 
} 

llamar a esta función recursiva de su main() así:

combos(0, c, ""); 
+0

Ah, debería haberme dado cuenta de esto. : p ¡Gracias por la ayuda! Muy buen código. – Supervisor

+0

@Supervisor ¡De nada! Si la respuesta le resulta útil, considere [aceptarla] (http://meta.stackexchange.com/questions/16721/how-does-accept-rate-work) para indicar que el problema está resuelto y para ganarse un nueva insignia en Stack Overflow. – dasblinkenlight

+0

Hecho y hecho. :) – Supervisor

Cuestiones relacionadas