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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
#include <iostream>
#include <cstdlib>
#include <vector>
using namespace std;
int solution = 0;
void nQueens(int);
bool place(int , int);
vector <int> x;
int n;
int main() {
do
{
cout << "Entrez le nombre de reines : ";
cin >> n;
}
while (n < 4);
nQueens(0);
return 0;
}
void nQueens(int ligne){
for(int colonne = 0 ; colonne<n ;colonne++){
if(place(ligne,colonne)){
x.push_back (colonne);
if (ligne==n-1)
{
solution ++;
for (int a=0; a<x.size(); a++)
cout<< x[a] << " ";
x.pop_back();
cout << endl << "Solution : " << solution << endl;
}else
{
nQueens(ligne+1);
}
}
if (colonne == n-1)
x.pop_back();
}
}
bool place(int ligne , int colonne){
for(int j = 0 ; j<ligne;j++){
if((x[j] == colonne)||(abs(x[j]-colonne)== abs(j-ligne)))
{
return false;
}
}
return true;
} |
Partager