Bonjour,

je n'arrive pas à comprendre le principe utilisé pour résoudre ce problème (Voir les commentaires dans le code). En fait cet algorithme résout le problème de 8 r sur une dame.

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
public static void main(String[] args) {
    int y = 0;
    b[0] = -1;
 
    while (y >= 0) {
 
    	do
    	{ b[y]++; 
    	System.out.println(""+b[y]);}
 
      while ((b[y] < 8) && unsafe(y));
 
      if (b[y] < 8) 
      {
        if (y < 7) {
          b[++y] = -1;  // à ce niveau la qu'est ce qu'il fait et quand appelle exactement putboard ?
          System.out.println("b["+y+"] = -1");
        } else {
 
          putboard(); // mettre les 8 r sur la dame
 
        }
      } else
      {y--;}//else
 
    }
 
 
  }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
static boolean unsafe(int y) {
    int x = b[y];
    for (int i = 1; i <= y; i++) {
      int t = b[y - i];
      if (t == x || t == x - i || t == x + i) { // pourquoi on compare t et x +/- i ????
        return true;
 
      }
    }
 
    return false;
  }