Pagini recente » Cod sursa (job #1897327) | Cod sursa (job #3188584) | Cod sursa (job #964366) | Cod sursa (job #1541409) | Cod sursa (job #2296762)
#include <bits/stdc++.h>
#define Nmax 14
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
int dame[Nmax];
int n,nr = 0;
bool lin[Nmax],diag_prin[Nmax*2],diag_sec[Nmax*2];
void print()
{
for (int i = 1; i <= n; i++)
fout << dame[i] << " ";
fout << "\n";
}
bool verify(int i,int k)
{
return !lin[i] && !diag_prin[k-i+n] && !diag_sec[k+i-1];
}
void backtracking(int k)
{
if (k == n+1)
{
if (nr < 1)
{
//cout << "solutia: " ;
print();
nr++;
}
else nr++;
}
else
{
for (int i = 1; i <= n; i++)
{
//cout << i << " " << k << "\n";
if(verify(i,k))
{
// cout << verify(i,k) << "\n";
dame[k] = i;
lin[i] = true;
diag_prin[k - i + n] = true;
diag_sec[k + i - 1] = true;
backtracking(k+1);
lin[i] = diag_prin[k - i + n] = diag_sec[k + i -1] = false;
}
}
}
return;
}
int main()
{
fin >> n;
backtracking(1);
fout << nr;
return 0;
}