【算法】3 由招聘问题看随机算法

招聘问题

我想看我博客的还是学生人群偏多吧,本身很快就要去面试了,在这篇博客的问题中,我们就把自己当作Boss过把瘾。

某天,你想雇用一名算法工程师。当然,不可能让你这个Boss亲自去到处练习应聘者,而是选择了中介。雇用中介每天都会给你推荐一个应聘者(PS:还是让自己轻松点,一天只应聘一个人哈)。是个地球人都知道,你必须要给中介付一小笔钱。然后如果你雇用了一个应聘者则需要更多的钱,一来你要解雇现有的算法工程师,更重要的是你要付给中介一大笔钱。在这个问题中还有一个关键的问题,虽然有些不合情理——只要遇到更好的算法工程师,你都会把之前的给解雇掉(忽略合同等等哦)。

相信大家一看这个问题就知道重点是什么了,钱,钱,钱,还是钱。你希望费用是最低的。

那么解决这个问题的逻辑呢,当然就是:

1)从1到n个应聘者中不断地面试
2)如果当前应聘者比上一个更好,则雇用当前应聘者并解雇上一个雇用者

问题是如何将实际问题转换成伪代码,伪代码才是最重要的,有了它你便可以将其改成任何语言的描述。

HIRE-ALGORITHM-ENGINEER(n)
1   employee=0
2   for i=1 to n
3       interview candidate i
4       if candidate i is better than employee 
5           employee = i
6           hire candidate i

相比大家都看过该系列的前两篇算法博文呢吧?这一篇和前面两篇的区别在于问题的角度不同了,以前我们考虑执行时间,现在我们考虑雇用所花的费用。

大家想想这和前面用到的归并排序有哪些相似点呢?

不管是执行时间,还是花费费用,在算法之中都是由一些操作来执行的,所以终究还是逃离不了算法的分析。

如前所述,假定总共有n个人需要面试,有m个人最终被雇用。面试一个应聘者时需要给中介的费用是小的,设为 cs ;而在你面试通过了这个应聘者后给中介的费用才是大的,设为

  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值