Pagini recente » Cod sursa (job #919449) | Cod sursa (job #2467477) | Cod sursa (job #1987977) | Cod sursa (job #1522988) | Cod sursa (job #1554801)
#include <iostream>
#include <cmath>
#include<fstream>
using namespace std;
ifstream f("damesah.in");
ofstream g("damesah.out");
int x[13];
int solutie[13];
void write(int n)
{
for (int i=1; i<=n; i++)
solutie[i]=x[i];
}
int verif(int k)
{
for (int i=1; i<k; i++)
if ((x[k]==x[i])||(k-i==abs(x[k]-x[i])))
return 0;
return 1;
}
int Back(int n)
{
int eSolutie, k;
k=1;
x[k]=0;
int nrsol=0;
int prima=1;
while (k>0)
{
eSolutie=0;
while ((x[k]<n) && (!eSolutie))
{
x[k]++;
eSolutie=verif(k);
}
if (!eSolutie){
k--;
}
else
{
if (k==n)
{
if (prima)
{
write(n);
prima=0;
}
nrsol++;
}
else
{
k++;
x[k] = 0;
}
}
}
return nrsol;
}
int main()
{
int n,k,eSolutie;
f>>n;
int nrsol=Back(n);
for (int i=1; i<=n; i++)
g<<solutie[i]<<' ';
g<<'\n';
g<<nrsol;
return 0;
}