HuTcHx

comptejuste

May 15th, 2012
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.67 KB | None | 0 0
  1. package logbackcomptejuste;
  2.  
  3. /**
  4.  *
  5.  * @author Aftab
  6.  */
  7. public class LogBackCompteJuste {
  8.  
  9.     /**
  10.      * @param args the command line arguments
  11.      */
  12.     public static boolean compteJuste(int somme, int[] disponible) {
  13.         boolean[] dispoUtilise = new boolean[disponible.length]; // init à faux
  14.  
  15.         if (backtracking(somme, disponible, 0, dispoUtilise)) {
  16.             return true;
  17.         } else {
  18.             return false;
  19.         }
  20.     }
  21.  
  22.     public static boolean backtracking(int somme, int[] disponible, int possede, boolean[] dispoUtilise) {
  23.  
  24.         boolean reussite = false;
  25.  
  26.         int indDispo = 0;
  27.  
  28.         while (!reussite && indDispo < disponible.length) {
  29.             /*
  30.              * System.out.println(indDispo); System.out.println("possède :
  31.              * "+possede); System.out.println("dispo[ind] : "
  32.              * +disponible[indDispo] );
  33.              *
  34.              */
  35.             if (estAcceptable(somme, disponible[indDispo], possede, dispoUtilise, indDispo)) {
  36.  
  37.                 possede = possede + disponible[indDispo];
  38.                 //System.out.println(" possède : "+possede);
  39.                 dispoUtilise[indDispo] = true;
  40.  
  41.                 if (possede < somme) {
  42.                     reussite = backtracking(somme, disponible, possede, dispoUtilise);
  43.  
  44.                     if (!reussite) {
  45.  
  46.                         possede = possede - disponible[indDispo];
  47.                         dispoUtilise[indDispo] = false;
  48.  
  49.                     }
  50.  
  51.                 }else{
  52.                     reussite = true;
  53.                 }
  54.                
  55.             }
  56.  
  57.             //   System.out.println("bad");
  58.  
  59.             indDispo = indDispo + 1;
  60.         }
  61.  
  62.  
  63.  
  64.         return reussite;
  65.     }
  66.  
  67.     public static boolean estAcceptable(int somme, int valeurAjouté, int possede, boolean[] dispoUtilise, int indDispo) {
  68.         //  System.out.println("somme , valeurAjoute , possède : " + somme + " " + valeurAjouté+" "+possede);
  69.         // System.out.println("valeur ajouté :" + (possede + valeurAjouté));
  70.  
  71.         boolean accpte = false;
  72.  
  73.         if (!dispoUtilise[indDispo]) {
  74.             if (somme >= (possede + valeurAjouté)) {
  75.                 //System.out.println("trueOK : "+ possede + valeurAjouté);  
  76.                 accpte = true;
  77.             } else {
  78.                 accpte = false;
  79.             }
  80.         }
  81.         //System.out.println(accpte);
  82.         return accpte;
  83.  
  84.     }
  85.  
  86.     public static void main(String[] args) {
  87.         // TODO code application logic here
  88.         int[] disponible = {10, 20, 50, 30};
  89.         int somme = 0;
  90.  
  91.         System.out.println(compteJuste(somme, disponible));
  92.  
  93.     }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment