zoukankan      html  css  js  c++  java
  • 贪心-电影节

    电影节:大学生电影节在北大举办! 这天,在北大各地放了多部电影,
    给定每部电影的放映时间区间,区间重叠的电影不可能同时看(端点可以重合),
    问李雷最多可以看多少部电影。
    输入:多组数据。每组数据开头是n(n<=100) 100),表示共n场电影。
    接下来n行,每行两个整数 均小于 1000 ),表示一场电影的放映区间
    n=0则数据结束
    输出:对每组数据输出最多能看几部电影
    Sample Input
    12
    1 3
    3 4
    0 7
    3 8
    15 19
    15 20
    10 15
    8 18
    6 12
    5 10
    4 14
    2 9

    Sample Output
    5

    思路:贪心解法,将所有电影按结束时间从小到大排序,第一步选结束时间最早的
    那部电影。 然后,每步都选和上一部选中的电影不冲突且结束时间最早的电影。
    python代码实现:
    def main():
        # 电影列表
        movie_list = []
        # 总共可以看多少部电影
        total = 1
        # n部电影
        n = int(input())
        for i in range(n):
            temp = list(map(int, input().split()))
            movie_list.append(temp)
        movie_list = sorted(movie_list, key=lambda x: x[1])
        # [[1, 3], [3, 4], [0, 7], [3, 8], [2, 9], [5, 10],
        #  [6, 12], [4, 14], [10, 15], [8, 18], [15, 19], [15, 20]]
        # 第一部影片的最早结束时间
        end_time = movie_list[0][1]
        for i in range(1, len(movie_list)):
            # 如果下一部影片的晚于或者等于上一部的结束时间,则可以看
            if end_time <= movie_list[i][0]:
                end_time = movie_list[i][1]
                total += 1
    
        print("最多能看%d部电影" % total)
    
    
    if __name__ == '__main__':
        main()
     
  • 相关阅读:
    java获取指定月份有几个星期x,获取指定月份跨了多少个星期
    linux下vim编辑器使用
    bash Shell条件测试
    grep与正则表达式
    网络基础--NAT
    网络基础-DHCP
    Python--元组(tuple)
    Python--元组(tuple)
    Linux--用户管理
    Linux--用户管理
  • 原文地址:https://www.cnblogs.com/an-wl/p/13418429.html
Copyright © 2011-2022 走看看