教务排课表的二分图问题_第1页
教务排课表的二分图问题_第2页
教务排课表的二分图问题_第3页
教务排课表的二分图问题_第4页
教务排课表的二分图问题_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、- -if(Cou=fopen(course.txt,w+)=NULL)打开操作不成功printf(course.txtcannotbeopenedn);exit(1);结束程序的执行fclose(Cou);FILE*Mat;if(Mat=fopen(matrix.txt,w+)=NULL)打开操作不成功printf(matrix.txtcannotbeopenedn);exit(1);结束程序的执行fclose(Mat);ReadTeacher(tea);ReadCourse(cou);ReadMatrix(mat);voidDeleteTeacher(vector&tea)/删除教师信息t

2、eachera;vector:iteratorit=tea.begin();;while(it!=tea.end()if(strcmp(,(*it).name)=0)it=tea.erase(it);elseit+;cout教师删除成功:n;PrintTeacher(tea);WriteTeacher(tea);ReadTeacher(tea);voidDeleteCourse(vector&cou)/删除课程信息coursea;vector:iteratorit=cou.begin();;while(it!=cou.end()if(strc

3、mp(,(*it).name)=0)it=cou.erase(it);elseit+;cout教师删除成功:n;PrintCourse(cou);WriteCourse(cou);ReadCourse(cou);voidGet_t_c(vectortea,vectorcou)/获取教师数和课程数t=tea.size();c=cou.size();boolFind(int。匈牙利算法for(intn=1;n=t;n+)/为每位老师找一个课if(matin&!usen)如果老师找到课并且这个课没有其他老师任教usen=true;标记此课有老师任教if(pn=0|Find(pn)/pi这

4、位老师还没找到课或者能够找到他的课pn=i;标记此老师有课returntrue;returnfalse;voidANS()/俅最大匹配数ans=0;memset(p,0,sizeof(p);for(inti=1;i=c;i+)memset(use,0,sizeof(use);if(Find(i)ans+;voidsolve(vectortea,vectorcou)/输出其中一种最大匹配ANS();while(ans-)/输出其中一种最大匹配memset(p,0,sizeof(p);for(inti=1;i=t;i+)求度for(inta=1;a=c;a+)if(matia=true)pi+;i

5、ntMIN=0;for(inti=1;i=t;i+)/初始化MINif(pi!=0)MIN=i;break;for(inti=1;ipi&pi!=0)MIN=i;for(inti=1;i=c;i+)/处理最小度if(matMINi=true)coutteaMIN-1.name老师任(课endl;for(inta=1;a=c;a+)/删除该老师matMINa=false;for(inta=1;a=t;a+)/删除该课matai=false;break;ReadMatrix(mat);intmain()vectortea;vectorcou;printf(欢迎使用教务排课系瞅

6、n);printf(正在导入数据库。n);ReadTeacher(tea);ReadCourse(cou);ReadMatrix(mat);printf(导入数据库成功!n);printf(请按任意键进入主菜单n);system(pause);system(cls);while(1)printf(1添加教师n);printf(2.添加课程n);printf(3.添加教师可任课课程n);printf(4.输出教师信息n);printf(5.输出课程信息n);printf(6.输出教师可任课课程n);printf(7.求最大匹配数n);printf(8.求一种最大匹配方案n);printf(9.清

7、空数据库n);printf(10.删除教师信息:n);printf(11.删除课程信息:n);printf(12.关闭程序:n);printf(请输入正确的选项);inti=0;scanf(%d,&i);getchar();switch(i)case1:AddTeacher(tea);break;case2:AddCourse(cou);break;case3:AddMatrix(mat,tea,cou);break;case4:PrintTeacher(tea);break;case5:PrintCourse(cou);break;case6:PrintMartix(mat,tea,cou);break;case7:Get_t_c(tea,cou);ANS();printf(%dn,ans);break;case8:Get_t_c(tea,cou);solve(tea,cou);break;case9:Reset(mat,tea,cou);break;case10:DeleteTeacher(tea);memset(mat,0,sizeof(mat);break;case11:DeleteCourse(cou);memset(mat,0,si

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论