java中小学排课表算法_排课表算法及代码实现!写成功啦,与大家一同分享,绝密(其它地方...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

}

int kebiaomatrix[5][3];

int te_worktimematrix[5][3];

for(x0=0;x0<5;x0++)

for(int y0=0;y0<3;y0++)

te_worktimematrix[x0][y0]=0;

for(j=0;j

{

int kelesson=kemu[j].w_num /2;

int stepnum;

switch(kelesson)

{

case(3):

stepnum=2;

break;

case(2):

stepnum=3;

break;

case(1):

stepnum=4;

break;

default:

printf("信息有错,不好意思,你不得不重来,嘎嘎...\n");

exit(-1);

}

if(kemu[j].mainflag ==1)

{

int t0=0;

for(int m0=0;m0

{

int x0,y0;

for(x0=t0;x0<5;x0++)

for(y0=0;y0<2;y0++)

if(te_worktimematrix[x0][y0]==0&&kebiaomatrix[x0][y0]==0)

{

te_worktimematrix[x0][y0]=kebiaomatrix[x0][y0]=1;

t0=x0;

goto B1;

}

B1:                 int x00;

if(x0==5)

{

for(x00=0;x00<5;x00++)

{

y0=2;

if(te_worktimematrix[x00][y0]==0&&kebiaomatrix[x00][y0]==0)

{

te_worktimematrix[x00][y0]=kebiaomatrix[x00][y0]=1;

t0=x00;

}

}

x0=x00;

}

if(x0==5)

{

printf("课表已满\n");

exit(-1);

}

t0=(t0+stepnum)%5;

maxteacher[kemu[j].km_te ].te_worktime [x0][y0]=1;

kebiaotype *newkebiaonode=(kebiaotype *)malloc(sizeof(kebiaotype));

newkebiaonode->ketime =y0+1;

strcpy(newkebiaonode->kmname ,kemu[j].kemustr );

newkebiaonode->next =NULL;

kebiaotype *ap=NULL,*cp=kebiao[x0];

while(cp!=NULL)

if((y0+1)ketime )

break;

else

{

ap=cp;

cp=cp->next ;

}

if(ap==NULL)

{

newkebiaonode->next =kebiao[x0];

kebiao[x0]=newkebiaonode;

}

else

{

newkebiaonode->next =cp;

ap->next =newkebiaonode;

}

}

}

else

{

int t0=stepnum;

for(int m0=0;m0

int x0,y0;

for(x0=t0;x0<5;x0++)

{

y0=2;

if(te_worktimematrix[x0][y0]==0&&kebiaomatrix[x0][y0]==0)

{

te_worktimematrix[x0][y0]=kebiaomatrix[x0][y0]=1;

t0=x0;

goto C;

}

C:             int x00;

if(x0==5)

{

for(x00=0;x00<5;x00++)

for(y0=0;y0<2;y0++)

if(te_worktimematrix[x00][y0]==0&&kebiaomatrix[x00][y0]==0)

{

te_worktimematrix[x00][y0]=kebiaomatrix[x00][y0]=1;

t0=x00;

goto D;

}

D:                    x0=x00;

}

if(x0==5)

{

printf("课表已满\n");

exit(-1);

}

maxteacher[kemu[j].km_te ].te_worktime [x0][y0]=1;

kebiaotype *newkebiaonode=(kebiaotype *)malloc(sizeof(kebiaotype));

newkebiaonode->ketime =y0+1;

strcpy(newkebiaonode->kmname ,kemu[j].kemustr );

newkebiaonode->next =NULL;

kebiaotype *ap=NULL,*cp=kebiao[x0];

while(cp!=NULL)

if((y0+1)ketime )

break;

else

{

ap=cp;

cp=cp->next ;

}

if(ap==NULL)

{

newkebiaonode->next =kebiao[x0];

kebiao[x0]=newkebiaonode;

}

else

{

newkebiaonode->next =cp;

ap->next =newkebiaonode;

}

}

}

printf("合肥学院%s班课表总览表\n",maxclassnum[i].classname );

for(int j0=0;j0<5;j0++)

{

printf("星期%d",j0+1);

kebiaotype *px0=kebiao[j0];

while(px0!=NULL)

{

if(px0->ketime ==1)

{

printf("  1-2节   %s",px0->kmname );

px0=px0->next ;

}

else if(px0->ketime ==2)

{

printf("  2-3节   %s",px0->kmname );

px0=px0->next ;

}

}

printf("\n");

}

printf("\n");

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值