Partage
  • Partager sur Facebook
  • Partager sur Twitter

backtraking - somme

    19 mai 2012 à 0:12:33

    bonsoir,

    je cherche un algorithme qui puisse me permettre de trouver une solution a ce problème :

    prenons n quelconque , on cherche une conbinaison de 3 chiffre a b c tel que a + b +c = n . avec a b c appartenant de 0 à 3 et n < 8

    je dois utiliser le backtraking mais j'ai du mal . c'est ce que j'ai fait pour l'instant mais jpense qu'il vaut mieux que je cherche un algo ...

    import java.util.*;
    
    public class fonctions {
    
    	static  Vector<Integer> solution = new Vector<Integer>();
    	static boolean  first = false;
    	static  Vector<Integer> solution_first = new Vector<Integer>();
    	public  static Vector<Integer> combinaison_somme( int n ,  int max , Vector<Integer> h , int x )
    	{
    		if( max == solution.size() )
    		{	
    		
    			int z = 0;
    			int i = 0;
    			while( i < solution.size() )
    			{
    				
    				z += solution.get(i);
    				i++;
    			}
    			
    			if( z == n )
    			{
    				if( first == false )
    				{
    					solution_first.add(solution.get(0));
    					solution_first.add(solution.get(1));
    					solution_first.add(solution.get(2));
    					first = true;
    					combinaison_somme( n , max , h , x+1);
    				}
    				
    			}
    			else // revenir en arriere si on a pas fini
    			{	
    				System.out.println(solution.get(0)+" "+solution.get(1)+" "+solution.get(2));
    				if( solution.get(0) == max && solution.get(1) == max && solution.get(2) == max)
    					return solution;
    				
    			
    				solution.removeElementAt(2);
    				System.out.println(solution.get(0)+" "+solution.get(1)+" ");
    				combinaison_somme( n , max , h , x-1);
    			}
    		}
    		else
    		{
    
    		
    			while( x <= 3 )
    			{	
    				System.out.println(x);
    				    
    					solution.add(x);
    					combinaison_somme( n , max , h , x);
    					x++;
    			}
    			
    		}
    		
    		return solution_first;
    			
    	}
    	
    }
    


    bien sur le but est d'ecrire cette fonction et non de trouver une fonctions .
    • Partager sur Facebook
    • Partager sur Twitter

    backtraking - somme

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown