问题补充说明:(八皇后问题):设计程序完成如下要求:在8×8的国际象棋棋盘上,放置8个皇后,使得这8个棋子不能互相被对方吃掉。 要求: (1)依次输出各种成功的放置方法。 (2)最好能画出棋盘的图形形式,并在棋盘上动态地演示试探过程。 (3)程序能方便地移植到其它规格的棋盘上。 请在两天内给我好吗,两天后我就要用了,谢谢!!!!
TurboC图形演示八皇后分步过程,红色为当前挪动棋子
出现一种结果棋盘颜色变为亮白色
空格键开关分步久黑视映息片曲演示,ESC退出
黑#include<math减宜危级般纸管究余永.h>
#include<conio.h>
#include<stdio.h>
#include<stdl夫ib.h>
#include<graphics.h>
#defineSIZE8
voiddrawb(intx,i来自nty,intcolor1,intcolor2);
360问答voiddrawqueen(intx,inty,i苏及事病挥应将ntcolor);
voidBacktrack(intt,intn,int*x);
i片掉得农希宣延方ntplace(intk,int*x);
intmain(void)
{
intGraphDriver;
intGraphMode由此口参问;
inti,j,x,y;
intqueenlist[SIZE+1];
x=70;
y=30;
GraphDriver=DETECT;
initgraph(&GraphDriver,&Gra又培phMode,"");
drawb(x,y,7,1);
getch();
Backtrack(1,SIZE,queenlist);
}
voiddrawb(intx,inty,intcolor危那攻料1,intcolor2)
{
inti,j;
cha负被队厂告首临苏注rbuffer[2]={"0"};
for(i=超0;i<SIZE;i++)
{
for(j=0;j<SIZE;j++)
{
setfillstyle(SOLID_FILL,((i%2==0&&j%2==0)||(i%2!=0&&j%2!=0))?color1:color2);
bar(x+i*49,y+j*49,x+i*49+48,y+j*49+48)个激袁议李层部;
}
}
setcolor(15);
for(i=0;i<SIZE;i++)
{
buffer[0]++;
outtextxy(x-15,y+i*49+20,buffer);
}
buffer[0]='A';
for(i=0;i<SI皇队课把让合如ZE;i++)
{
outtextxy(x+i*49+20,y+402,buffer);
buffer[0政鲁理要]++;
}
}
voiddrawque红鲁en(intx,int派肥刘y,intcolor)
{
setcolor(color);
setfillstyle(SOLID_FILL,color);
moveto(x*49+39,y*49+11);
lineto(x*49+39,y*49-11);
lineto(x*49+51,y*49-11);
lineto(x*49+51,y*49+11);
lineto(x*49+59,y*49+19);
lineto(x*49+31,y*49+19);
lineto(x*49+39,y*49+11);
floodfill(x*49+50,y*49+12,color);
}
intplace(intk,int*x)
{
intj;
for(j=1;j<k;j++)
if((abs(k-j)==abs(x[j]-x[k]))||(x[j]==x[k]))
return0;
return1;
}
voidBacktrack(intt,intn,int*x)
{
inti;
inta,b;
staticintstep=1;
if(t>n)
{
drawb(70,30,15,1);
for(i=1;i<=n;i++)
{
drawqueen(i,x[i],0);
}
a=getch();
if(a==0)
a=getch();
elseif(a==27)
{
closegraph();
exit(0);
}
elseif(a==32)
{
step=1-step;
}
}
else
for(i=1;i<=n;i++)
{
x[t]=i;
if(step==1)
{
drawb(70,30,7,1);
for(a=1;a<=t;a++)
{
drawqueen(a,x[a],(a==t)?12:0);
}
a=getch();
if(a==27)
{
closegraph();
exit(0);
}
elseif(a==32)
{
step=1-step;
}
}
if(place(t,x))
Backtrack(t+1,n,x);
}
}