Pagini recente » Cod sursa (job #2131814) | Cod sursa (job #200384) | Cod sursa (job #840925) | Cod sursa (job #2445101) | Cod sursa (job #3192756)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
ifstream fin ("damesah.in");
ofstream fout ("damesah.out");
int n,cnt;
vector<int> v;
bool print=true;
int fr[15];
bool ok()
{
for(int i=0; i<n; i++)
for(int j=i+1; j<n; j++)
if(i+v[i] == j+v[j] || i-j == v[i]-v[j])
return false;
return true;
}
void backtracking(int k)
{
if(k>=n)
{
if(ok())
{
cnt++;
if(print)
{
for(int i=0; i<n; i++) fout<<v[i]<<' ';
fout<<'\n';
print = false;
}
}
}
else
{
for(int i=1; i<=n; i++)
{
if(fr[i] == 0)
{
fr[i]++;
v[k] = i;
backtracking(k+1);
fr[i]--;
}
}
}
}
int main()
{
fin>>n;
v.assign(n,0);
backtracking(0);
fout<<cnt;
return 0;
}