반응형
 n-Queens 알고리즘

#include
#include
#include

typedef int index;

index col[4];
index n=4;

void main(void)
{
   void queens(index i);
   queens(0);
}

void queens (index i)
{
   int t;
   index j;
   bool promising(index i);
   
   if(promising(i))
       if(i==n){
           for(t=1;t<=n;t++)
               cout << col [t];
           cout << "
";
       }
       else
           for(j=1;j<=n; j++)
           {
               col[i+1]=j;
               queens(i+1);
           }
}
//-----------------------------------------------------------
bool promising(index i)
{
   index k;
   bool _switch;
   k=1;
   _switch=true;
   while(k        if(col[i]==col[k]||abs(col[i]-col[k])==i-k)
           _switch=false;
       k++;
   }
   return _switch;
}
반응형

'자료구조 & 알고리즘' 카테고리의 다른 글

양방향 연결 리스트  (0) 2007.05.12
Dijkstra 알고리즘 증명  (0) 2007.04.21
Kruskal 알고리즘 증명  (0) 2007.04.21
Posted by Real_G