Foros del Web » Programación para mayores de 30 ;) » Java »

Duda Permutacion en Java

Estas en el tema de Duda Permutacion en Java en el foro de Java en Foros del Web. Que tal gente de Foros del Web, estoy trabajando en un programa (creo un poco simple), el unico problema que me tope y con el ...
  #1 (permalink)  
Antiguo 17/09/2013, 02:50
Avatar de Alcest  
Fecha de Ingreso: septiembre-2013
Mensajes: 1
Antigüedad: 10 años, 7 meses
Puntos: 0
Duda Permutacion en Java

Que tal gente de Foros del Web, estoy trabajando en un programa (creo un poco simple), el unico problema que me tope y con el cual estoy trabado es el de hacer un algoritmo de permutacion, trata de hacer mi propio algoritmo y por mas tiempo que le dedique me revolvia demasiado, puesto que los hacia muy recursivos, no soy experto en programacion, simplemente me voi iniciando y pues necesito un poco de ayuda con un algoritmo que encontre ( http://stackoverflow.com/questions/13218019/generating-permutations-of-an-int-array-using-java-erro ), el cual tiene un poco derror, les dejo mi codigo, el IDE con el que trabajo es Netbeans 7.3.1, actualmente lo que necesito es mostrar una permutacion de las medidas de los pedidos, es decir, una permutacion del array pedidos[].

Código:
package proyectovarillas;

import java.util.Scanner;

/**
 *
 * @author Oscar
 */
public class ProyectoVarillas {

    public static int contador = 0;

    public static void Permutacion(int[] input, int startindex) {
        int size = input.length;

        if (size == startindex + 1) {
            System.out.println("Permutacion "+(contador+1));
            for (int i = 0; i < size; i++) {
                System.out.print(input[i] + ",  ");
            }
             System.out.print("\n");
            contador++;
        } else {
            for (int i = startindex; i < size; i++) {

                int temp = input[i];
                input[i] = input[startindex];
                input[startindex] = temp;
                Permutacion(input, startindex + 1);
            }
        }
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int cant, atotal;
        System.out.print("Cantidad de varillas en el almacen: ");
        cant=in.nextInt();
        
        int almacen[] = new int[cant];
        atotal = 0;
        for (int i=0;i<cant;i++){
            System.out.print("Longitud de la varilla"+"["+(i+1)+"] en centimetros: ");
            almacen[i] = in.nextInt();
            atotal = atotal + almacen[i];
        }
        
        int pcant,ptotal;
        System.out.print("De cuantas varillas sera el pedido: ");
        pcant = in.nextInt();
        
        int[] pedido = new int[pcant];
        ptotal = 0;
        for (int i=0;i<pcant;i++){
            System.out.print("Longitud del pedido"+"["+(i+1)+"] en centimetros: ");
            pedido[i] = in.nextInt();
            ptotal = ptotal + pedido[i];
        }
        
        int completo = atotal - ptotal;
        if (completo<0){
            System.out.print("No se completa el pedido.");
            System.exit(0);
        }
         
        int fac = pcant;
        for (int i=1;i<pcant+1;i++){
            if (i<pcant){
                int n = pcant - i;
                fac = fac * n;
            }
        }
        
        contador = 0;
        Permutacion(pedido, 0);
        System.out.println("Permutaciones obtenidas: "+fac);
        
    }
}
Saludos

Etiquetas: netbeans, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:32.