Ajout aux autres réponses: la création d'un tableau bidimensionnel ne fait que compliquer le code.
Vous avez juste besoin d'un vecteur de taille 8 pour un échiquier ordinaire. Ou 8 + 1 si, comme C, la 1ère position est 0, seulement pour simplifier le code, et traiter 1-8 et non 0-7.
Si vous pensez que x est votre position dans le tableau, et y le contenu de la position. Par exemple, la planche [1] = 8 signifie que la première reine est à [1,8].
De cette façon, il vous suffit de vérifier la validation des colonnes.
À la faculté, je suis tombé sur un très vieux livre (des années 60?), Sur les algorithmes implémentés dans Dartmouth BASIC, qui implémentait le problème des 8 reines en utilisant le moins de mémoire possible (étant aussi vieux, cela a du sens).
Pour autant que je m'en souvienne, il a utilisé l'idée de vecteur, et il a essentiellement forcé toutes les positions de la carte avec deux cycles FOR. Pour vérifier la validité de la position, il a utilisé une troisième boucle, un cycle WHILE dans chaque position revient dans le vecteur et vérifie un nombre égal ou une formule utilisant une opération tangente pour vérifier les diagonales.
Malheureusement, j'ai perdu la trace de ce livre ...
Cet algorithme a trouvé toutes les solutions au problème des n-queen.