Pagini recente » Cod sursa (job #1251262) | Cod sursa (job #1020510) | Cod sursa (job #1704105) | Cod sursa (job #2131833) | Cod sursa (job #55161)
Cod sursa(job #55161)
#include<fstream.h>
#include<math.h>
#include<conio.h>
int s[20], n,k;
// k=nivelul curent -- care se construieste.
int succesor()
{
if (s[k]<n)
{
s[k]++;
return 1;
}
else return 0;
}
// s[linie]=coloana
int valid()
{
int i;
for (i=1; i<=k-1; i++)
if (s[k]==s[i] || k-i==abs(s[k]-s[i])) return 0;
// ac coloana ac diag
return 1;
}
ofstream out("dame.out");
void afis ()
{
for (int i=1; i<=n; i++)
{
for (int j=1; j<=n; j++)
if (s[i]==j) out<<i<<" "<<j<<'\n';
}
}
void back()
{
k=1;
s[k]=0;
int oks, okv;
while (k>0)
{
do {
oks=succesor();
if (oks) okv=valid();
} while (oks && !okv);
if (oks)
if (k==n) { out<<k<<'\n';afis (); return;}
else
{
k++;
s[k]=0;
}
else k--;
}
}
void main()
{
ifstream in("dame.in");
in>>n;
back();
}