//autor:baker//email:baker1203@sina.com//course designing for data structure and c++ programming//time:23/5/06/* discription: place eight quenes onto a chessborad of 8*8 standard,if only that case take place.any one quene can not attack others requiring: 1.output all feasible schemes 2.best of all,you can print the chessboard by graphic delineation,and play the progress dynamic 3.you programme can put into other chessboard. */ #include"iostream.h"#include"conio.h"#include"graphics.h"#include"dos.h"#include"stdio.h"#include"stdlib.h"#define QUENE 8 int num; class quene{ public: void addnew(int); void display(); void reset(); void init(); int a[QUENE]; int b[QUENE*2-1]; int c[QUENE*2-1]; int x[QUENE]; }; void quene::addnew(int i){ int j; for(j=0;j<=QUENE-1;j++) if(a[j]&&b[i-j+QUENE-1]&&c[i+j]) { x[i]=j; a[j]=0; b[i-j+QUENE-1]=0; c[i+j]=0; if(i<QUENE-1) addnew(i+1); else display(); a[j]=1; b[i-j+7]=1; c[i+j]=1; } } void quene::display(){ int i; init(); setcolor(RED); cout<<"number:"<<num+1; for(i=0;i<=QUENE-1;i++) circle((x[i]+1)*50+25,50*(i+1)+25,24); num++; getch(); }void quene::init(){ int i,j; cleardevice(); setcolor(WHITE); for(i=0;i<QUENE;i++) for(j=0;j<QUENE;j++) { rectangle(50*(i+1),50*(j+1),50*(i+2),50*(j+2)); if((i+j)%2==0) { floodfill(50*(i+1)+5,50*(j+1)+5,WHITE); } } } int main(){ int i; int size; int gdriver=DETECT,gmode; quene que; for(i=0;i<=QUENE-1;i++) que.a[i]=1; for(i=0;i<=(QUENE-1)*2;i++) que.b[i]=que.c[i]=1; initgraph(&gdriver,&gmode,"..\\bgi"); que.addnew(0); cout<<endl; cout<<num<<" sulutions found! "; getch(); } TCDS中运行,通过 注释:略

评论