工作安排-od-python

工作安排
小明每周上班都会拿到自己的工作清单,工作清单内包含n项工作,每项工作都有对应的耗时时长(单位h)和报酬,工作的总报酬为所有已完成工作的报酬之和。那么请你帮小明安排一下工作,保证小明在指定的工作时间内工作收入最大化。

输入描述

输入的第一行为两个正整数T,n。

T代表工作时长(单位h,0<T<100000),n代表工作数量(1 < n< 3000)。

接下来是n行,每行包含两个整数t,w。

t代表该项工作消耗的时长(单位h,t>0),w代表该项工作的报酬。

输出描述

输出小明指定工作时长内工作可获得的最大报酬。

示例一

输入

40 3

20 10

20 20

20 5

输出

30
代码

def max_salary(total_time, current_time, current_salary, index, jobs):
    if current_time >= total_time:
        res.append(current_salary)
        return

    for i in range(index, len(jobs)):
        each_time = jobs[i][0]  # 时间
        each_salary = jobs[i][1]  # 薪水
        max_salary(total_time, current_time + each_time, current_salary + each_salary, i + 1, jobs)


res = []
t, n = map(int, input().split())
jobs = [list(map(int, input().split())) for i in range(n)]
max_salary(t, 0, 0, 0, jobs)
print(res)
print(max(res))

回溯部分用例不满足

posted on 2024-02-03 21:20  nomorecloudays  阅读(23)  评论(0)    收藏  举报

导航