#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int n,m;
int a[20];
int print()
{ int i;
m++;printf("m= %d\n",m);
for(i=1;i<=n;i++)
printf("a[%d] = %d\n",i,a[i]);
}
int check(int v,int k)
{
int i;
for(i=1;i<=k;i++) {
if(a[i]==v) return 0;
if(a[i]+i==v+k) return 0;
if(a[i]-i==v-k) return 0;
} return 1;
}
int TRY(int k)
{
int v;
for (v=1;v<=n;v++)
if(check(v,k)==1)
{
a[k]=v;
if(k==v) print();
else TRY(k+1);
}
}
int main()
{
printf("nhap vao so n = \n");
scanf("%d",&n);
m=0; TRY(1);
if(m==0) printf("k co nghiem");
printf("\nfinish...");
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CiNpbmNsdWRlPG1hdGguaD4KCmludCBuLG07CmludCBhWzIwXTsKCmludCBwcmludCgpCnsgaW50IGk7Cm0rKztwcmludGYoIm09ICVkXG4iLG0pOwpmb3IoaT0xO2k8PW47aSsrKQpwcmludGYoImFbJWRdID0gJWRcbiIsaSxhW2ldKTsKfQoKaW50IGNoZWNrKGludCB2LGludCBrKQp7CmludCBpOwpmb3IoaT0xO2k8PWs7aSsrKSB7CmlmKGFbaV09PXYpIHJldHVybiAwOwppZihhW2ldK2k9PXYraykgcmV0dXJuIDA7CmlmKGFbaV0taT09di1rKSByZXR1cm4gMDsKfSByZXR1cm4gMTsKfQoKaW50IFRSWShpbnQgaykKewppbnQgdjsKZm9yICh2PTE7djw9bjt2KyspCmlmKGNoZWNrKHYsayk9PTEpCnsKYVtrXT12OwppZihrPT12KSBwcmludCgpOwplbHNlIFRSWShrKzEpOwp9Cn0KCmludCBtYWluKCkKewpwcmludGYoIm5oYXAgdmFvIHNvIG4gPSBcbiIpOyAKc2NhbmYoIiVkIiwmbik7Cm09MDsgVFJZKDEpOwppZihtPT0wKSBwcmludGYoImsgY28gbmdoaWVtIik7CnByaW50ZigiXG5maW5pc2guLi4iKTsKfQ==