一天会议安排(贪心算法-Python)

# 一天会议安排
# 要求会议次数最多
from operator import itemgetter
# 贪心策略
# 优先选取结束时间最早的会议,当结束时间相同时,优先选取持续时间最短的

# 初始列表
my_list = [
    # 会议标签
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    # 会议开始时间
    [8, 9, 10, 11, 13, 14, 15, 17, 18, 16],
    # 会议结束时间
    [10, 11, 15, 14, 16, 17, 17, 18, 20, 19],
    # 会议持续时间
    [2, 3, 5, 3, 3, 3, 2, 1, 2, 3]
]
# print(my_list)
# 将列表在按照 list[2]升序的基础上 再按 list[3] 升序
sorted_list = [list(t)
               for t in zip(*sorted(zip(*my_list), key=itemgetter(2, 3)))]

# 安排的会议次数
sum = 0
i = 1
while i < 10:
    j = i

    while j < 10 and sorted_list[1][j] < sorted_list[2][i-1]:
        j += 1
    if j < 10 and sorted_list[1][j] >= sorted_list[2][i-1]:
        sum += 1
    i = j+1
# 避免会议只有一个无法识别,避免最后一个会议没有统计
if len(sorted_list) == 1 or sum != 0:
    sum += 1
print("会议次数:", sum)

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值