هشت وزیر را در هشت خانه شطرنج ( ۸ * ۸ ) طوری قرار دهید که هیچکدام یکدیگر را تهدید نکنند. وزیر در خانه های شطرنج به صورت عرضی،طولی و قطری می تواند حرکت کند. این مسئله قابل تعمیم به مسئله N وزیر در یک شطرنج N*N است.
تاریخچه: این مسئله در سالی ۱۸۴۸ توسط شطرنج بازی به نام Max Bezzel عنوان شد و ریاضی دانان بسیاری ازجمله Gauss و Georg Cantor بر روی این مسئله کار کرده و در نهایت آنرا به N وزیر تعمیم دادند. اولین راه حل توسط Franz Nauck در سال ۱۸۵۰ ارائه شد که به همان مسئله N وزیر تعمیم داده شد. پس از آن Gunther راه حلی با استفاده از دترمینان ارائه داد که J.W.L. Glaisher آنرا کامل نمود.
در سال ۱۹۷۹ ، Edsger Dijkstra با استفاده از الگوریتم عقب گرد اول عمق این مسئله را حل کرد.
#include
#include
#include
#include
const int m=20;
int k[m][m];
int Count=0;
int v=0 , n=0 , i=0 , j=0 , state=0;
void remove(int i,int j)
{
int p,q;
k[i][j]=0;
Count--;
for(p=0;p=0 && q>=0)
{
k[p--][q--]--;
}
p=i+1;
q=j-1;
while(p=0)
{
k[p++][q--]--;
}
p=i-1;
q=j+1;
while(p>=0 && q=0 && q>=0)
{
k[p--][q--]++;
}
p=i+1;
q=j-1;
while(p=0)
{
k[p++][q--]++;
}
p=i-1;
q=j+1;
while(p>=0 && q<<<'.';
else
cout<<<'X';
}
cout<<<<<<"Total states founded for "<<<"*"<<<" boards and "<<<" Queens: "<<<<<<"Press q to exit or any key to continue...";
int c=getch();
if(c=='q')exit(0);
}
}
void move(int p,int q)
{
apply(p,q);
check();
for(int i=p;i<<"**************Queens******************"<<<<"Enter size of board :"; cin>>n;
cout<<"Enter number of queens:"; cin>>v;
clrscr;
draw();
for(i=0;i<<"Total states:"<<