#include <stdio.h>
#include <math.h>

unsigned char i,a[9];
int s=0;

main()
{inicio();
 for(;;)
   for(i=1;i<=8;i++)
    {if(final()) return;
     while(condicion()) incremento();
    }
   escritura();
   incremento();
}

inicio()
{for(i=1;i<=8;i++) a[i]=1;
 a[0]=0;
}

int condicion()
{int j;
 for(j=1;j<i;j++)
  {if(a[i]==a[j]) return(1);
   if(abs(a[i]-a[j])==i-j) return(1);
  }
 return(0);
}

incremento()
{int j;
  if(a[i]<8) a[i]++;
    else
     {i--;
      incremento();
     }
 
for(j=i+1;j<=8;j++) a[j]=1;
}

escritura()
{s++;
 printf("Solucion num. %3d - ",s);
 printf("%d %d %d %d %d %d %d %d \n",
 a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);
 if(s%10==0)
  {printf("Pulse una tecla para continuar\n");
   getch();
  }
}

int final()
{return(a[0]);
}