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

来源:互联网 发布:ug电极编程绘图 编辑:程序博客网 时间:2024/05/17 15:59

在面试一个应聘者之后,我们能够给每人一个分数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 = valuedef 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 0
原创粉丝点击