Les huit reines

Contenu du snippet

Le problème des huit reines est un classique dont j'ai ré-entendu parlé dernièrement.
J'ai trouvé que c'était une bonne excuse pour faire un peu de STL ;-)

Source / Exemple :


#include <iostream>
#include <iterator>
#include <algorithm>
using namespace std;
 
bool isValid( int t[8] ) {
    bool valid = true;
    for ( int i = 0; valid && i < 7; ++i )
        for ( int j = i + 1; valid && j < 8; ++j )
            valid = ( abs( t[j] - t[i] ) != abs( j - i ) );
           
    return valid;
}
 
void display( int t[8] ) {
    copy( t, t + 8, ostream_iterator<int>( cout, ":" ) );
    cout << endl;
}
 
int main() {
    int chess[8] = { 1,2,3,4,5,6,7,8 };
    do {
        if ( isValid( chess ) )
            display( chess );
    }
    while( next_permutation( chess, chess + 8 ) );
}

Conclusion :


Pas de commentaire pour le moment, ni de grande théorie, ce n'est pas là pour répondre à vos devoirs mais juste pour vous montrer une idée.
Bon courage.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.