Pagini recente » Cod sursa (job #3260626) | Cod sursa (job #777684) | Cod sursa (job #3252242) | Cod sursa (job #1957493) | Cod sursa (job #1096855)
#include<stdio.h>
#include<stdlib.h>
FILE *in,*out;
//functii
void back(int k);
bool valid(int k);
int tipar();
//constante
const int Nmax=14;
//variabile
int n;
int answer[Nmax];
int main(void)
{
in=fopen("damesah.in","rt");
out=fopen("damesah.out","wt");
fscanf(in,"%d",&n);
back(1);
fclose(in);
fclose(out);
return 0;
}
void back(int k)
{
for(int i=1; i<=n; ++i)
{
answer[k]=i;
if(valid(k))
if(k==n)
tipar();
else
back(k+1);
}
}
bool valid(int k)
{
if(answer[k]==answer[k-1]+1 || answer[k]+1==answer[k-1])
return false;
for(int i=1; i<k; ++i)
{
if(answer[k]==answer[i] || i-answer[i]==k-answer[k])
return false;
}
return true;
}
int tipar()
{
for(int i=1; i<=n; ++i)
fprintf(out,"%d ",answer[i]);
fprintf(out,"\n");
fclose(in);
fclose(out);
return 0;
}