Pagini recente » Cod sursa (job #1914008) | Cod sursa (job #1363786) | Cod sursa (job #418774) | Cod sursa (job #76383) | Cod sursa (job #1825287)
#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;
ifstream f("damesah.in"); ofstream g("damesah.out");
int n,v[20],k,lin[20],dp[40],ds[40],nr;
int valid()
{
if(lin[v[k]]) return 0;
else if(dp[k-v[k]+n]) return 0;
else if(ds[k+v[k]-1]) return 0;
else return 1;
}
int main()
{
f>>n;
k=1;
while(k>0)
{
if(v[k]<n)
{
++v[k];
if(valid())
{
lin[v[k]]=1;
dp[k-v[k]+n]=1;
ds[k+v[k]-1]=1;
if(k==n)
{
++nr;
if(nr==1)
{
for(int i=1;i<=n;++i) g<<v[i]<<' ';
}
lin[v[k]]=0;
dp[k-v[k]+n]=0;
ds[k+v[k]-1]=0;
}
else ++k;
}
}
else
{
v[k]=0;
--k;
lin[v[k]]=0;
dp[k-v[k]+n]=0;
ds[k+v[k]-1]=0;
}
}
g<<'\n'<<nr;
return 0;
}