用python贪心算法写作业问题并且有相应结果输出 小明上学,老师布置了 n 个作业,每个作业恰好需要一天做完,每个作业都有最后提交时间ti及其逾期的扣分ki。已知作业n = 3,每个作业的最后提交时间t = [1,3,1],作业逾期扣分k = [6,2,3]。以输入n = 0时作为结束,请给出小明做作业的顺序,以便扣最少的分数。
时间: 2024-02-23 07:01:55 浏览: 45
关于排课系统的贪心算法
4星 · 用户满意度95%
好的,我来给您讲一下思路。这是一个经典的贪心算法问题,我们可以按照以下步骤来解决:
1. 构建作业列表,包括作业编号、最后提交时间和逾期扣分。
2. 根据作业的最后提交时间从小到大对作业列表进行排序。
3. 依次完成每个作业,并记录总扣分。
4. 输出作业完成顺序和总扣分。
下面是具体的Python代码实现:
```python
# 构建作业列表
homeworks = []
n = 3
for i in range(n):
t = int(input("请输入作业 %d 的最后提交时间:" % (i+1)))
k = int(input("请输入作业 %d 的逾期扣分:" % (i+1)))
homeworks.append((i+1, t, k))
# 根据最后提交时间从小到大排序
homeworks.sort(key=lambda x: x[1])
# 完成作业并记录总扣分
total_score = 0
order = []
for h in homeworks:
order.append(h[0])
if h[1] < len(order): # 逾期了
total_score += h[2]
# 输出结果
print("小明完成作业的顺序为:", order)
print("总扣分为:", total_score)
```
您可以尝试输入样例数据,即最后提交时间为[1, 3, 1],逾期扣分为[6, 2, 3],来验证代码的正确性。
阅读全文