工作安排
小明每周上班都会拿到自己的工作清单,工作清单内包含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))
标签:salary,安排,jobs,python,res,od,current,工作,time
From: https://www.cnblogs.com/domm/p/18005232