Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    5

    Calcolo permutazioni senza ripetizioni Array

    Salve a tutti,

    Sono nuovo del forum ma conosco abbastanza bene la programmazione in Java, il mio problema č il seguente:

    Ho un array con un numero n di interi, dovrei scrivere tutte le possibili permutazioni dell'array (senza ripetizione) su un file (che poi organizzo riga per riga).

    Scrivere su file non č un problema, il vero casino č appunto nel calcolo delle permute senza ripetizioni.

    Ho provato a creare un ArrayList che dapprima riempio con numeri casuali e diversi e poi mediante la classe Collections che ha il metodo shuffle genero un mescolamento di elementi, poi ovviamente devo ripetere la cosa tante volte quante sono le possibili permute senza ripetizioni (questa cosa č calcolabile). Infine devo stare a controllare se esistono per caso due righe uguali nel file e quindi ne devo cancellare una, ovviamente non ho mai la certezza che questa cosa mi calcoli tutte le possibili permute.
    Non esiste un metodo o una procedura che faccia gią questa cosa? ossia calcolare tutte le permute senza ripetizioni di un array?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    99
    Et voilą:

    codice:
    public class Permutazioni {	public static void main(String[] args) {
    		Permutazioni permute = new Permutazioni();
    		int[] listaIniziale = {1,2,3};
    		List<ArrayList<Integer>> risultato = permute.permute(listaIniziale);
    		for(ArrayList<Integer> lista : risultato){
    			System.out.println(lista);
    		}
    		
    	}
    	public ArrayList<ArrayList<Integer>> permute(int[] num) {
    		ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
    		permute(num, 0, result);
    		return result;
    	}
    
    
    	void permute(int[] num, int start, ArrayList<ArrayList<Integer>> result) {
    
    
    		if (start >= num.length) {
    			ArrayList<Integer> item = convertArrayToList(num);
    			result.add(item);
    		}
    
    
    		for (int j = start; j <= num.length - 1; j++) {
    			swap(num, start, j);
    			permute(num, start + 1, result);
    			swap(num, start, j);
    		}
    	}
    
    
    	private ArrayList<Integer> convertArrayToList(int[] num) {
    		ArrayList<Integer> item = new ArrayList<Integer>();
    		for (int h = 0; h < num.length; h++) {
    			item.add(num[h]);
    		}
    		return item;
    	}
    
    
    	private void swap(int[] a, int i, int j) {
    		int temp = a[i];
    		a[i] = a[j];
    		a[j] = temp;
    	}
    }
    se mi chiedeste chi č per me un vero amico vi risponderei che č una persona che io considero alla pari di me.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    5
    Grazie mille per l'aiuto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.