Pagini recente » Cod sursa (job #2351623) | Cod sursa (job #1811760) | Cod sursa (job #2383238) | Cod sursa (job #2388791) | Cod sursa (job #1409065)
#include <iostream>
#include <fstream>
using namespace std;
int sol,a[14][14],st[14],n,gas;
ofstream g("damesah.out");
int inter(int l,int c)
{
int i=1;
while(i+l<=n && i+c<=n)
{
if(a[i+l][c+i]==1) return 0;
i++;
}
i=1;
while(l-i>=1 && c-i>=1)
{
if(a[l-i][c-i]==1) return 0;
i++;
}
i=1;
while(l-i>=1 && c+i<=n)
{
if(a[l-i][c+i]==1) return 0;
i++;
}
i=1;
while(l+i<=n && c-i>=1)
{
if(a[l+i][c-i]==1) return 0;
i++;
}
i=1;
while(i+l<=n)
{
if(a[i+l][c]==1) return 0;
i++;
}
i=1;
while(l-i>=1)
{
if(a[l-i][c]==1) return 0;
i++;
}
i=1;
while(i+c<=n)
{
if(a[l][c+i]==1) return 0;
i++;
}
i=1;
while(c-i>=1)
{
if(a[l][c-i]==1) return 0;
i++;
}
return 1;
}
void verificare()
{
int i,j;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=0;
a[1][st[1]]=1;
for(i=2;i<=n;i++)
if(inter(i,st[i])==1) a[i][st[i]]=1;
else return;
sol++;
if(gas==0)
{
for(i=1;i<=n;i++)
g<<st[i]<<" ";
gas=1;
}
}
void back(int k)
{
int i;
for(i=1;i<=n;i++)
{
st[k]=i;
if(k==n)
verificare();
else back(k+1);
}
}
int main()
{
ifstream f("damesah.in");
f>>n;
back(1);
g<<"\n"<<sol;
g.close();
}