Pagini recente » Monitorul de evaluare | Cod sursa (job #2386645) | Cod sursa (job #404887) | Cod sursa (job #1932344) | Cod sursa (job #1936974)
#include <bits/stdc++.h>
using namespace std;
int x[100],n,nrsol;
ifstream f("damesah.in");
ofstream g("damesah.out");
void write()
{
int i,j;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(j==x[i])
g<<j<<" ";
g<<'\n';
}
int cont(int k)
{
int i;
for(i=1;i<k;i++)
{
if(x[k]==x[i])
return 0;
if(k-i==fabs(x[k]-x[i]))
return 0;
}
return 1;
}
int ok=1;
void backtr(int k)
{
int i;
if(k>n)
{
nrsol++;
if(ok)
{
write();
ok=0;
}
}
else
for(i=1;i<=n;i++)
{
x[k]=i;
if(cont(k))
backtr(k+1);
}
}
int main()
{
f>>n;
backtr(1);
g<<nrsol;
return 0;
}