Pagini recente » Cod sursa (job #2968098) | Cod sursa (job #2808519) | Cod sursa (job #664288) | Cod sursa (job #2005657) | Cod sursa (job #1849466)
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("damesah.in");
ofstream g("damesah.out");
int n;
int a[20];
int nr;
void afisare()
{
for(int i=1; i<=n; i++)
{
g<<a[i]<<" ";
}
}
int verificare(int a[], int k)
{
for(int i=1; i<k; i++)
{
if(a[i]==a[k]) return 0;
if(k>1 && abs(a[i]-a[k])== k-i) return 0;
}
return 1;
}
void backtracking(int k, int &ok)
{
for(int i=1; i<=n; i++)
{
a[k]=i;
if(verificare(a, k))
{
if(k==n)
{
if(ok==0)
{
afisare();
ok=1;
}
nr++;
}
else backtracking(k+1, ok);
}
}
}
int main()
{
int ok=0;
f>>n;
backtracking(1, ok);
g<<endl;
g<<nr;
return 0;
}