算法导论程序7--在线雇佣问题(Python)

在面试一个应聘者之后,我们能够给每人一个分数score。在面试过j个人之后,我们知道这j个人中的最高分,但是不知道后面的n-j个会不会有最高的。

我们决定采取如下策略:

选择一个正整数k<n。面试然后拒绝前k个应聘者,再雇佣其后比前面的应聘者有更高分数的第一个应聘者。

如果最高得分的应聘者在前k个应聘者。我们将雇佣第n个应聘者。


class Assitant:
    def __init__(self,a_name="anonymous",value=0):
        self.name = a_name
        self.score = value

def on_line_maximum(k,assList):
    n = len(assList)
    bestscore = float("-inf")
    for i in range(k):
        if assList[i].score > bestscore:
            bestscore = assList[i].score
    for i in range(k,n):
        if assList[i].score > bestscore:
            return assList[i]
    return assList[n-1]

运行:

>>> assList = [Assitant("dawei",16),Assitant("weimin",18),Assitant("peifang",36),Assitant("sunli",12),Assitant("shaoyun",99),Assitant("yuzheng",78)]
>>> people = on_line_maximum(3,assList)
>>> people.name
'shaoyun'


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值