首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求选学的最有方案

2013-01-11 
求选课的最有方案最近学校要选课,由于同一个年级同一门课程有好多老师讲,所以我想如果在一周内能通过学一

求选课的最有方案
最近学校要选课,由于同一个年级同一门课程有好多老师讲,所以我想如果在一周内能通过学一些老师的课,从而使一周能空出几个空课天(一整天都没课)。
程序要求:输入课程信息(课程名称,讲师,上课时间),输出最优课程表,即让一周中能有最多的空课天(一整天都没课)。
想了一下算法,用了结构和链表,感觉实在太麻烦了。麻烦各位大侠帮忙想想,最好是用c语言来编这个程序。给出的算法越仔细越好,多谢啦、、、、
[解决办法]
用一个数组a[5]代表周一到周五,每个数组存放一个int,共有n门课程,分别用int的低n位表示,遍历所有课程,把数组处理出来,然后开始枚举,先枚举一天的组合,再枚举两天的。。。。
a[5]={0};
for (each 课程)
{
    if (课程k在星期i)
        a[i] 
[解决办法]
= 1 << k;
}
for (i = 1; i <= 5; ++i)
{
    选取i天的所有组合
    temp 
[解决办法]
= 所有组合的a;
    if (temp == (1 << n) - 1) return 你可以凑出来5 - i天;
}
方案只需枚举的时候记录下最优的组合,然后根据最优组合的a[]来确定选的课程
[解决办法]
楼上的方法不错。

热点排行