Pagini recente » Cod sursa (job #2151438) | Cod sursa (job #1057736) | Cod sursa (job #1338019) | Cod sursa (job #1464151) | Cod sursa (job #3145590)
#include <fstream>
#include <map>
using namespace std;
ifstream fin ("damesah.in");
ofstream fout("damesah.out");
const int DIM = 15;
int n, solCnt;
int sol[DIM];
bool isUsed[DIM], mainDiag[2 * DIM], secDiag[2 * DIM];
void backtrack(int step) {
if (step == n + 1) {
solCnt++;
if (solCnt == 1) {
for (int i = 1; i <= n; i++)
fout << sol[i] << ' ';
fout << '\n';
}
} else {
for (int i = 1; i <= n; i++) {
if (!isUsed[i] && !mainDiag[n + step - i] && !secDiag[step + i]) {
sol[step] = i;
isUsed[i] = mainDiag[n + step - i] = secDiag[step + i] = true;
backtrack(step + 1);
isUsed[i] = mainDiag[n + step - i] = secDiag[step + i] = false;
}
}
}
}
int main() {
fin >> n;
solCnt = 0;
backtrack(1);
fout << solCnt;
fin.close();
fout.close();
return 0;
}