Codigo:
//* Permutaciones (Forma recursiva)
//- Importa posición
//- Con repetición
package permutacion1;
public class Permutacion1 {
public static void main(String[] args) {
String[] elementos = "a,b,c,d,e".split(",");
int n = 4; //Tipos para escoger
int r = elementos.length; //Elementos elegidos
Perm1(elementos, "", n, r);
}
private static void Perm1(String[] elem, String act, int n, int r) {
if (n == 0) {
System.out.println(act);
} else {
for (int i = 0; i < r; i++) {
Perm1(elem, act + elem[i] + ", ", n - 1, r);
}
}
}
}
a, a, a, a,
a, a, a, b,
a, a, a, c,
...
...
...
e, e, e, c, e, e, e, d,
e, e, e, e,
BUILD SUCCESSFUL (total time: 0 seconds)
Excelente, muchas gracias me sirvio de mucho (Y)
ResponderEliminaruna pregunta, como pasaría las permutaciones me las imprima en un archivo
ResponderEliminarY como sería en c++?
ResponderEliminarEstoy intentando hacer lo mismo, pero usando un ArrayList en vez del String act, y no lo consigo, porque la lista mantiene todos los valores en todas las iteraciones. ¿Alguna idea?
ResponderEliminarpublic void recur(List valores, List listap, int longitud){
if (longitud==0){
System.out.println(listap);
}else{
for (int i = 0; i < valores.size(); i++) {
System.out.println(" i: "+i +" valor: "+valores.get(i)+"longitud: "+longitud);
listap.add(valores.get(i));
recur(valores, listap, longitud-1);
}
}
}
Por si te sirve de algo. Lo consegui:
EliminarTienes que borrar el ultimo elemento insertado:
private static void Perm1(List elem, Listact, int n) {
if (n == 0) {
for (int i=0; i< elem.size();i++){
System.out.print(elem.get(i));
}
System.out.println("");
} else {
for (int i = 0; i < elem.size(); i++) {
act.add(elem.get(i));
Perm1(elem, act, n - 1);
int lastIndex=act.size()-1;
act.remove(lastIndex);
}
}
}