Esercizio con tutte le possibili combinazioni array

di il
2 risposte

Esercizio con tutte le possibili combinazioni array

Buonasera, non riesco a svolgere in maniera integrale un esercizio di Java.
Questo esercizio chiede di scrivere un metodo che dati in ingresso una quantità di denaro v (es: 5) e l'insieme dei valori delle monete disponibili M (es: {1,2,5,15,20,32}) restituisca tutti i modi in cui è possibile cambiare v utilizzando monete i cui valori nominali compaiono in M.
Es: v=5; M={1,2,5,15,20,32}; dovrà restituire: cinque monete da 1; tre monete da 1 e una da 2, una moneta da 1 e due da 2; una sola moneta da 5.
Grazie in anticipo per l'aiuto

2 Risposte

  • Re: Esercizio con tutte le possibili combinazioni array

    Prova a DESCRIVERE a parole (o in PSEUDOCODICE) come ti immagini sia la soluzione.
  • Re: Esercizio con tutte le possibili combinazioni array

     public static ArrayList<int[]> restituisci (int v, int []m) throws Exception
    	{
    		
    		if(v<=0)
    			throw new Exception("Negativo");
    		if(m.length==0)
    			throw new Exception("Array vuoto");
    		
    		ArrayList <int[]> b = new ArrayList<int[]>();
    		
    		for(int j=m.length-1; j>=0; j--)
    		{
    			int [] a = new int[m.length];
    			inizializza(a); //Setto a 0 tutti gli elementi dell'array
    			int n=v;
    			if(m[j]<=n)
    			{
    			for(int i=j; i>=0; i--)
    			{ 
    				
    					while(m[i]<=n)
    					{   
    						a[i]+=1;
    						n=n-m[i];
    					
    					}
    				
    				
    			}
    			}
    		
    			
    			if(!vuoto(a)) //controllo se l'array è vuoto
    				b.add(a);
    		}
    		
    		return b;
    		
    	} 
    Io per ora l'ho fatto così ma non mi trova tutte le possibili soluzioni ovviamente. Nell'esempio citato mi trova 3/4 delle soluzioni. Non saprei come ottimizzarlo per quello chiedo.
Devi accedere o registrarti per scrivere nel forum
2 risposte