public class MiniMax_version_AlphaBeta_compteur { public static int compteur_noeud = 0; private static int ExploreMax(int nbr_allumettes, int alpha, int beta){ compteur_noeud++; if (nbr_allumettes <= 0){ return 1; } int localAlpha = alpha; for (int coup = 1; coup <= 3; coup++){ int res = ExploreMin(nbr_allumettes - coup, localAlpha, beta); if (res > localAlpha){ localAlpha = res; if (localAlpha >= beta){ return localAlpha; } } } return localAlpha; } private static int ExploreMin(int nbr_allumettes, int alpha, int beta){ compteur_noeud++; if (nbr_allumettes <= 0){ return -1; } int localBeta = beta; for (int coup = 1; coup <= 3; coup++){ int res = ExploreMax(nbr_allumettes - coup, alpha, localBeta); if (res < localBeta){ localBeta = res; if (localBeta <= alpha){ return localBeta; } } } return localBeta; } public static void main(String[] args) { int nbr_allumettes = 31; System.out.println(ExploreMax(nbr_allumettes, Integer.MIN_VALUE, Integer.MAX_VALUE)); System.out.println(compteur_noeud); } }