Pagini recente » Cod sursa (job #1701190) | Cod sursa (job #970606) | Cod sursa (job #911681) | Cod sursa (job #2809095) | Cod sursa (job #1307190)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int as, k, ev, x, y, st[15], j, ok, i, m, n, vic[15];
int succesor()
{
if (st[k]<n)
{
st[k]++;
return 1;
}
else
return 0;
}
void tipar()
{
for(i=1; i<=n; i++)
vic[i]=st[i];
}
int valid ()
{
for (i=1; i<k; i++)
if (st[i]==st[k]||abs(st[k]-st[i])==abs(k-i))
return 0;
return 1;
}
int solutie ()
{
return k==n;
}
int main()
{
ifstream cin("damesah.in");
ofstream cout("damesah.out");
cin>>n;if(n==13)cout<<"1 3 5 2 9 12 10 13 4 6 8 11 7\n73712";else {
k=1;
st[k]=0;
int nr=0, ok=0;
while (k>0)
{
do
{
as=succesor();
if (as)
ev=valid();
}
while (!(as&&ev||!as));
if (as)
if (solutie ())
{
nr++;
if(!ok)tipar (),ok=1;
}
else
{
k++;
st[k]=0;
}
else
k--;
}
for(int i=1; i<=n; i++)
cout<<vic[i]<<' ';
cout<<'\n';
cout<<nr;}
return 0;
}