Pagini recente » Cod sursa (job #1588025) | Cod sursa (job #2936372) | Cod sursa (job #267839) | Cod sursa (job #2967960) | Cod sursa (job #2546)
Cod sursa(job #2546)
#include <stdio.h>
#include <stdlib.h>
#define dim 201
int sol[dim],n,k;
int abs1(int n);
void back();
void tipar();
void init()
{ sol[k]=0;
}
int am_succesor()
{ if(sol[k]<n)
{ sol[k]++;
return 1;
}
else
return 0;
}
int e_valid()
{ for(int i=1;i<k;++i)
if(sol[k]==sol[i]||abs1(sol[k]-sol[i])==abs1(k-i))
return 0;
return 1;
}
int solutie()
{ return k==n;
}
int main()
{ freopen ("dame.in","r",stdin);
freopen ("dame.out","w",stdout);
scanf("%d",&n);
back();
fclose(stdin);fclose(stdout);
return 0;
}
int abs1(int n)
{ if(n<0)
n*=-1;
return n;
}
void back()
{
int as;k=1;
init();
while(k>0)
{ do{}while((as=am_succesor())&&!e_valid());
if(as)
if(solutie())
tipar();
else
{ k++;init();
}
else
k--;
}
}
int bun(int k,int val)
{ for(int i=1;i<k;++i)
if(sol[k]==sol[i]||abs1(sol[k]-sol[i])==abs1(k-i))
return 0;
return 1;
}
void tipar()
{ for(int i=1;i<=n;++i)
{ for(int j=1;j<=n;++j)
if(sol[i]==j)
printf("%d %d",i,j);
printf("\n");
}
exit(0);
}