#include <stdio.h>
#include <stdlib.h>

int dame_in_gefahr(int *schachbrett)
{
 int x,y; /*x==nach unten; y==nach rechts*/
 for(x=0; x<7; x++)
   if(schachbrett[x]) /*Ist auf feld[x] eine Dame?*/
     for(y=x+1; y<=7; y++)
       if(schachbrett[y]) /*Ist auf feld[y] eine Dame?*/
        {/*Wir überprüfen ob sich die beiden Damen kollidieren?*/
         if(schachbrett[x]==schachbrett[y])/*beide Damen in der selben Zeile?*/
            return 1;/*Kollision in gleicher Zeile*/
        if(abs(x-y)==abs(schachbrett[x]-schachbrett[y]))//diagonal?
            return 2;/*Kollision in der diagonalen*/
         }
 return 0; /*kein Kollision!*/
}

int dame(int *schachbrett, int position)
{
 int x=1;
 static int counter=1,c=1;

 while(x<=8)
 {
   schachbrett[position]=x;/*Wir setzten die Dame mit der*/
                           /*Nummer x an feld[position]*/
   if(!dame_in_gefahr(schachbrett))
    {
     if(position)
      {
        if(dame(schachbrett,position-1))//die Nächste Dame
        return 1; /*Dame in dieser Position setzten*/
      }
     else
      {
        int i;
        printf("Lösungs-Nr.%2d : ",counter++);
        for(i=0; i<8; i++)
        printf("(%d,%d)",i+1,schachbrett[i]);
        printf("\n");
       }
    }
   x++;
  }/*Ende while*/
 schachbrett[position]=0;
 return 0;
}

int main()
{
 int schachbrett[8],x;
 for(x=0;x<8;x++)
   schachbrett[x]=0;
 dame(schachbrett,7);

 return 0;
}