Bonsoir,

Pour un projet en cours, je dois créer un algorithme récursif permettant de résoudre le problème des 8 reines (placer 8 reines sur un échiquier de 8x8 cases sans qu'elles ne se menacent mutuellement).
Pour cet algorithme je me suis inspiré d'une proposition de solution mise à disposition en langage algorithmique sur un site trouvé.

Codant en Java je l'ai retranscrit dans ce langage mais j'ai une erreur.

Voici le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
public class ProbReines {
    private int nbReines = 8;
    private int[] echiquier;
 
    public ProbReines(){
 
    }
 
    public static void main(String[] args){
        ProbReines test = new ProbReines();
        test.placerReine(1);
    }
 
    public boolean estLibre(int[] unEchiquier,int ligne,int colonne){
        int l, c;
        boolean resultat;
 
        resultat = true;
        l = 1;
 
        while(l <= ligne){
            c = unEchiquier[l];
            resultat = resultat && (Math.abs(ligne-l) != Math.abs(colonne-c)) && (colonne != c);
            l = l + 1;
        }
        return resultat;
    }
 
    public void placerReine(int reine){
        int col;
 
        if(reine > nbReines){
 
        }
        else{
            col = 1;
            while(col <= nbReines){
                if(estLibre(echiquier,reine,col)){
                    echiquier[reine] = col;
                    placerReine(reine + 1);
                    echiquier[reine] = 0;
                }
                col = col +1;
            }
        }
    }
}

Et voici l'erreur :

Exception in thread "main" java.lang.NullPointerException
at projet.ProbReines.estLibre(ProbReines.java:25)
at projet.ProbReines.placerReine(ProbReines.java:41)
at projet.ProbReines.main(ProbReines.java:14)
Java Result: 1

Sur l'algo de départ j'ai cette donnée :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
S[1,n] : tableau d'entiers;
Ce que j'ai retranscrit par :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
private int[] echiquier;
Parce qu'honnêtement, je ne suis plus très opérationnel en Java et j'ai toujours eu un souci avec les tableaux..

Merci d'avance,
Bonne soirée !