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 :
Ce que j'ai retranscrit par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part S[1,n] : tableau d'entiers;
Parce qu'honnêtement, je ne suis plus très opérationnel en Java et j'ai toujours eu un souci avec les tableaux..
Code : Sélectionner tout - Visualiser dans une fenêtre à part private int[] echiquier;
Merci d'avance,
Bonne soirée !
Partager