八皇后python解释流程图_八皇后问题程序的解析和流程图,谁帮我解答一下?急...

最近被一程序搞火了!就下面的,帮忙看看,详细解析一下可以么,里面有好多函数啊!先谢了!#include#include#include#includecharn[3]={\'0\...

最近被一程序搞火了!就下面的,帮忙看看,详细解析一下可以么,里面有好多函数啊!先谢了!

#include

#include

#include

#include

char n[3]={\'0\',\'0\'};/*用于记录第几组解*/

int a[8],b[15],c[24],i;

int h[8]={127,177,227,277,327,377,427,477};/*每个皇后的行坐标*/

int l[8]={252,217,182,147,112,77,42,7};/*每个皇后的列坐标*/

void *arrow;

void try(int i)

{int j;

for (j=1;j<=8;j++)

if (a[j-1]+b[i+j-2]+c[i-j+7]==3) /*如果第i列第j行为空*/

{a[j-1]=0;b[i+j-2]=0;c[i-j+7]=0;/*占用第i列第j行*/

putimage(h[i-1],l[j-1],arrow,COPY_PUT);/*显示皇后图形*/

delay(500);/*延时*/

if(i<8) try(i+1);

else /*输出一组解*/

{n[1]++;if (n[1]>\'9\') {n[0]++;n[1]=\'0\';}

bar(260,300,390,340);/*显示第n组解*/

outtextxy(275,300,n);

delay(3000);

getch();

}

a[j-1]=1;b[i+j-2]=1;c[i-j+7]=1;

putimage(h[i-1],l[j-1],arrow,XOR_PUT);/*消去皇后,继续寻找下一组解*/

delay(500);

}

}

int main(void)

{int gdrive=DETECT,gmode,errorcode;

unsigned int size;

initgraph(&gdrive,&gmode,"c:\\\\tc\\\\bgi");

errorcode=graphresult();

if (errorcode!=grOk)

{printf("Graphics error\\n");exit(1);}

rectangle(50,5,100,40);

rectangle(60,25,90,33);

/*画皇冠*/

line(60,28,90,28);line(60,25,55,15);

line(55,15,68,25);line(68,25,68,10);

line(68,10,75,25);line(75,25,82,10);

line(82,10,82,25);line(82,25,95,15);

line(95,15,90,25);

size=imagesize(52,7,98,38); arrow=malloc(size);

getimage(52,7,98,38,arrow);/*把皇冠保存到缓冲区*/

clearviewport();

settextstyle(TRIPLEX_FONT, HORIZ_DIR, 4);

setusercharsize(3, 1, 1, 1);

setfillstyle(1,4);

for (i=0;i<=7;i++) a[i]=1;

for (i=0;i<=14;i++) b[i]=1;

for (i=0;i<=23;i++) c[i]=1;

for (i=0;i<=8;i++) line(125,i*35+5,525,i*35+5);/*画棋盘*/

for (i=0;i<=8;i++) line(125+i*50,5,125+i*50,285);

try(1);/*调用递归函数*/

delay(3000);

closegraph();

free(arrow);

}

谢谢 关注的人。经过努力 我已经有所了解了这程序 不过现在遇到了:我需要更长的程序,需要加入其他功能程的困难。如游戏界面,游戏比赛规则等等。如果谁能帮我一起搞定,好心人联系我QQ347636855

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值