Pagini recente » Cod sursa (job #219058) | Cod sursa (job #3138730) | Cod sursa (job #1079861) | Cod sursa (job #747071) | Cod sursa (job #2110458)
#include <fstream>
using namespace std;
ifstream fi("damesah.in");
ofstream fo("damesah.out");
int n,k,d;
int a[14][14];
bool verif(int x, int y)
{
for(int i=1;i<=n;i++)
if(a[i][y]==1)
return false;
for(int j=1;j<=n;j++)
if(a[x][j]==1)
return false;
for(int i=1;x+i<=n and y+i<=n;i++)
if(a[x+i][y+i]==1)
return false;
for(int i=1;x-i>=1 and y-i>=1;i++)
if(a[x-i][y-i]==1)
return false;
for(int i=1;x-i>=1 and y+i<=n;i++)
if(a[x-i][y+i]==1)
return false;
for(int i=1;x+i<=n and y-i>=1;i++)
if(a[x+i][y-i]==1)
return false;
return true;
}
void dame(int x, int y)
{
if(x==n and d==n)
{
if(k==0)
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(a[i][j]==1)
fo<<j<<" ";
}
k++;
}
else
for(int j=1;j<=n;j++)
if(verif(x+1,j))
{
a[x+1][j]=1;
d++;
dame(x+1,j);
d--;
a[x+1][j]=0;
}
}
int main()
{
fi>>n;
dame(0,1);
fo<<endl;
fo<<k;
}