6413|32

900

帖子

0

TA的资源

五彩晶圆(初级)

楼主
 

百度到一个好玩的,给大家分享一下 [复制链接]

“五个程序员开发五个模块,每个人开发不同模块的效率不同,如何分配才能保证效率最高,请用程序写出来。”
这是c语言笔试题,如何实现呢?
此帖出自单片机论坛

最新回复

这个题目就是做的时间最长的家伙拖项目后腿  详情 回复 发表于 2013-10-15 22:17

点评

什么问题没看懂? 五个人的模块必需全部执行吗? 模块间无顺序无依赖吗? 并行调度还是分时调度?  详情 回复 发表于 2013-10-12 13:23
点赞 关注
 

回复
举报

4

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
够高深的了,要想想、、、、
此帖出自单片机论坛

点评

嗯,好好想想。蛮有意思的题目。  详情 回复 发表于 2013-10-11 09:18
 
 

回复

900

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 

回复 沙发小杜锅锅 的帖子

嗯,好好想想。蛮有意思的题目。
此帖出自单片机论坛
 
 
 

回复

900

帖子

0

TA的资源

五彩晶圆(初级)

4
 
没人感兴趣吗?还是都不会闹
此帖出自单片机论坛
 
 
 

回复

900

帖子

0

TA的资源

五彩晶圆(初级)

5
 
我初步设想建立五个数组M1[5],M2[5],M3[5],M4[5],M5[5]表示5个人;
数组的 M[0]-M[4]   5个位置分别表示五个人对1-5个模块的效率;
找出效率最高的排列;
效率最高当然要求,总的时间最短前提下。每个程序员花费时间也最短。
接下来怎么搞呢?
此帖出自单片机论坛
 
 
 

回复

900

帖子

0

TA的资源

五彩晶圆(初级)

6
 
对这25个数进行排序,然后从小到大,先判断前五个有没有不重合的人的5个数,如果没有有,再判断前6个有没有不重合的人的五个数;直到第一次找到不重合人的5个数为止。



快沉了,有人看没人顶。
此帖出自单片机论坛
 
 
 

回复

132

帖子

122

TA的资源

一粒金砂(高级)

7
 
会有25个数中都没有不同人的5个数的情况,找不到怎么办?
此帖出自单片机论坛
 
 
 

回复

132

帖子

122

TA的资源

一粒金砂(高级)

8
 
最理想的情况是5个人用时最短的模块都不同,分5种情况讨论,用枚举出所有的情况
此帖出自单片机论坛

点评

5个人用时最短的模块都不同,这个太特殊了, 5种情况是哪5种呢。  详情 回复 发表于 2013-10-12 09:26
 
 
 

回复

172

帖子

0

TA的资源

纯净的硅(初级)

9
 
#include
#include

#define PROGRAMMER_NUMBER 5
#define        TASK_NUMBER 5
#define MAX_TIME 255
#define MAX_NUMBER(a,b) (a>b?a:b)

typedef enum {FALSE,TRUE} BOOL;

int Efficiency[PROGRAMMER_NUMBER][TASK_NUMBER]={{1,2,3,4,5},
                                                                                                {2,3,4,5,6},
                                                                                                {3,4,5,6,7},
                                                                                                {4,5,6,7,8},
                                                                                                {8,6,7,8,9}};

BOOL IsTaskSelected[TASK_NUMBER];

int main(int argc, char *argv[]) {
        int task_index;
        int programmer_index;
        for(task_index=0;task_index                 IsTaskSelected[task_index]=FALSE;
        printf("The least time is %d\n",SearchStep(0));
        return 0;
}

int SearchStep(int Step_index)                                //Return the best choice in each step
{
        int best_choice=MAX_TIME;
        int result;
        int task_index;
        if (Step_index         {
                for(task_index=0;task_index                 {
                        if(IsTaskSelected[task_index]==FALSE)
                        {
                                IsTaskSelected[task_index]=TRUE;
                                result=MAX_NUMBER(SearchStep(Step_index+1),Efficiency[Step_index][task_index]);
                                if(best_choice>result)
                                        best_choice=result;
                                IsTaskSelected[task_index]=FALSE;
                        }
                }
                return best_choice;
        }
        else
        {
                for(task_index=0;task_index                         if(IsTaskSelected[task_index]==FALSE)
                                return Efficiency[Step_index][task_index];                       
        }       
}
此帖出自单片机论坛

点评

高手,能简单谈下你的流程吗?小弟实在看不明白。:surrender:  详情 回复 发表于 2013-10-12 14:12
:Cry:没看明白,先干会活,待会再研究研究  详情 回复 发表于 2013-10-12 09:41
 
 
 

回复

900

帖子

0

TA的资源

五彩晶圆(初级)

10
 
原帖由 yangking91 于 2013-10-11 20:55 发表
最理想的情况是5个人用时最短的模块都不同,分5种情况讨论,用枚举出所有的情况
5个人用时最短的模块都不同,这个太特殊了,
5种情况是哪5种呢。
此帖出自单片机论坛

点评

实在不会的话,还是把这25种情况都列出来,选一个最小值就可以了,性能也不坏O(n2),对付数量较小的够用了。前面的算法用到了递归,开销很大 [ 本帖最后由 yangking91 于 2013-10-12 20:51 编辑 ]  详情 回复 发表于 2013-10-12 20:49
 
 
 

回复

900

帖子

0

TA的资源

五彩晶圆(初级)

11
 
原帖由 walkwk 于 2013-10-12 09:20 发表
#include
#include

#define PROGRAMMER_NUMBER 5
#define        TASK_NUMBER 5
#define MAX_TIME 255
#define MAX_NUMBER(a,b) (a>b?a:b)

typedef enum {FALSE,TRUE} BOOL;

int Efficiency[PROGRAMMER_NUM ...

没看明白,先干会活,待会再研究研究
此帖出自单片机论坛
 
 
 

回复

2886

帖子

0

TA的资源

五彩晶圆(初级)

12
 
paixuwenti
此帖出自单片机论坛

点评

好像没那么简单啊:faint:  详情 回复 发表于 2013-10-12 14:05
 
 
 

回复

4008

帖子

0

TA的资源

版主

13
 

回复 楼主yangxf1217 的帖子

什么问题没看懂?
五个人的模块必需全部执行吗?
模块间无顺序无依赖吗?
并行调度还是分时调度?
此帖出自单片机论坛

点评

版主大人你好犀利啊! 我没看懂那个程序的流程。 五个模块都要做完。 模块间无顺序无依赖。 五个人可以同时干活。 请赐教!  详情 回复 发表于 2013-10-12 14:04
 
 
 

回复

900

帖子

0

TA的资源

五彩晶圆(初级)

14
 
原帖由 huo_hu 于 2013-10-12 13:23 发表
什么问题没看懂?
五个人的模块必需全部执行吗?
模块间无顺序无依赖吗?
并行调度还是分时调度?

版主大人你好犀利啊!

我没看懂那个程序的流程。
五个模块都要做完。
模块间无顺序无依赖。
五个人可以同时干活。

请赐教!
此帖出自单片机论坛

点评

这样的话不存在调度顺序的问题 如果多任务系统,多道程序并发执行,执行时间就是五个进程最长的那个. 如果单任务系统只能一个一个来. 还是没明白....啥问题?  详情 回复 发表于 2013-10-12 18:46
 
 
 

回复

900

帖子

0

TA的资源

五彩晶圆(初级)

15
 

回复 12楼exiao 的帖子

好像没那么简单啊
此帖出自单片机论坛
 
 
 

回复

900

帖子

0

TA的资源

五彩晶圆(初级)

16
 

回复 9楼walkwk 的帖子

高手,能简单谈下你的流程吗?小弟实在看不明白。
此帖出自单片机论坛

点评

总共5个人,5个任务,数组里存的是每个人完成不同任务需要的时间,因为同时开始做,所以整个项目完成的时间取决于花最多时间的那个人。所以任务是,找到一个排列,使每个任务都得到完成,并且最大时间尽可能短。  详情 回复 发表于 2013-10-12 14:32
 
 
 

回复

172

帖子

0

TA的资源

纯净的硅(初级)

17
 

回复 16楼yangxf1217 的帖子

总共5个人,5个任务,数组里存的是每个人完成不同任务需要的时间,因为同时开始做,所以整个项目完成的时间取决于花最多时间的那个人。所以任务是,找到一个排列,使每个任务都得到完成,并且最大时间尽可能短。

函数意义是对Step_index对应的员工进行任务分配,使得最大时间最短。方法是比对Step_index+1的结果和自己当前选择项目所需时间取最大,然后比较自己选择不同任务,选择时间最小的返回
此帖出自单片机论坛
 
 
 

回复

172

帖子

0

TA的资源

纯净的硅(初级)

18
 
有种感觉,这个算法不是最优的,在自己i3的电脑上奔了3秒,如果有其他的算法可以提出
此帖出自单片机论坛

点评

改天有空再想想你的程序,现在实在是不行了,想的深了就会出现一堆星星:Sad:  详情 回复 发表于 2013-10-12 15:24
:Cry: 高手。我看明白你的分析了,表示赞同。 但我没看明白你的程序,感觉是我两在下象棋,我看出2步,你看出5步,结果很伤感啊。 这个程序到底是不是最优化,真心没有能力去判断了。 我是做硬  详情 回复 发表于 2013-10-12 15:22
 
 
 

回复

900

帖子

0

TA的资源

五彩晶圆(初级)

19
 

回复 18楼walkwk 的帖子

高手。我看明白你的分析了,表示赞同。
          但我没看明白你的程序,感觉是我两在下象棋,我看出2步,你看出5步,结果很伤感啊。
      这个程序到底是不是最优化,真心没有能力去判断了。

我是做硬件的 求自我宽恕
此帖出自单片机论坛
 
 
 

回复

900

帖子

0

TA的资源

五彩晶圆(初级)

20
 

回复 18楼walkwk 的帖子

改天有空再想想你的程序,现在实在是不行了,想的深了就会出现一堆星星
此帖出自单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表