Bonsoir!
J'ai fait de mon mieux pour le titre, de toute façon on ne peut pas résumer un truc pareil
J'ai passé mon week-end sur un problème qui a vraiment fini par me prendre la tête. Je vais tenter d'expliquer le problème :
Nous avons un tableau à double entrée de 8*8 (toujours carré!), et chaque cellule de ce tableau dispose de 2 états disons 0 et 1. Le tableau est initialisé à 0.
Comme contrainte, nous avons l'obligation de placer quatre '1' dans chaque ligne, même chose dans chaque colonne. (Ni plus ni moins)
Le but est de générer tout les tableaux différents répondants à ces critères.
J'aimerais faire ça récursivement mais je n'arrive absolument pas à le faire, j'ai tenté des choses de ce genre :
évidemment sans succès.
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 generer(i, j, n) { if(n <= 8!/(4!*4!)*8) { cells[i][j] = 1; if check(cells) print cells; if (i%8 == 0) i++; j = 0; else j++; calcul(i, j+1, n+1); } }
(J'espère que ce pseudo-code est clair, 2-3 éclaircissements : check vérifie que le tableau actuel respect les contraintes et si oui on le garde (=on l'imprime). Et si mes souvenirs des cours de math sont bons, 8*8!/(4!*4!) est le nombre de tableaux possibles.)
Merci d'avance si vous pouvez me donner un coup de main, corriger mon pseudo-code, me lancer une idée..
Je précise que j'ai passé du temps et sur google et sur les cours de récursivité de developpez.com, sans succès. J'ai parfois de la peine à savoir quoi chercher, car même si c'est clair dans ma tête je ne connais pas les termes exacts pour formuler mes questions...
Partager