Pagini recente » Cod sursa (job #1122957) | Cod sursa (job #1395233) | Cod sursa (job #2784121) | Cod sursa (job #2863862) | Cod sursa (job #2299703)
#include <fstream>
using namespace std;
int length;
int answers;
const int MAX_QUEENS = 14;
bool columns[MAX_QUEENS];
bool mainDiagonals[MAX_QUEENS*2-1];
bool secondaryDiagonals[MAX_QUEENS*2-1];
int coordonates[MAX_QUEENS];
ifstream fin("damesah.in");
ofstream fout("damesah.out");
bool isValid(int line, int column){
if (columns[column])
return false;
if (mainDiagonals[line-column+length-1])
return false;
if (secondaryDiagonals[line+column])
return false;
return true;
}
void generateSolutions(int line){
if (line == length){
if (not answers)
for (int line = 0; line < length; line++)
fout << coordonates[line]+1 << " ";
answers++;
return;
}
for (int column = 0; column < length; column++){
if (isValid(line, column)){
coordonates[line] = column;
columns[column] = true;
mainDiagonals[line-column+length-1] = true;
secondaryDiagonals[line+column] = true;
generateSolutions(line+1);
columns[column] = false;
mainDiagonals[line-column+length-1] = false;
secondaryDiagonals[line+column] = false;
}
}
}
int main(){
fin >> length;
generateSolutions(0);
fout << "\n" << answers;
}