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 :
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 :
S[1,n] : tableau d'entiers;
Ce que j'ai retranscrit par :
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 !
Partager