def max_trees(L, d, forbidden_zones):# 初始化可种植数组,默认全部可种植road = [1] * (L + 1) # 1表示可以种植,0表示不可以种植# 标记不可种植区域for x, y in forbidden_zones:for i in range(x, y + 1): # 由于是闭区间,所以 y 也需要置0road[i] = 0# 遍历可种植区域,每隔 `d` 种一棵树count = 0i = 0while i 标记不可种植区域摘要:def max_trees(L, d, forbidden_zones):# 初始化可种植数组,默认全部可种植road = [1] * (L + 1) # 1表示可以种植,0表示不可以种植# 标记不可种植区域for x, y in forbidden_zone
用一个布尔数组(类似于 0~L 的路段)来标记哪些位置是可种植,哪些是不可种植。
遍历可种植区域每隔 d 计算一个种树点,直到无法继续种树。
时间复杂度O(L):对 0~L 进行一次遍历,保证运行效率足够。
来源:秀丽教育
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!