擅长:python、mysql、java
<p>这可能适用于您:</p>
<p>只需反转输入元组的顺序(使用海报),然后检查前一个元组未包含哪些元组。一种方法是建立一个字典,其中包含所有的条带(即代表条带的整数),这些条带之前已经被覆盖。然后,要检查一张海报是否被完全覆盖,您只需检查该海报的所有坐标是否都在字典中</p>
<p>请参见下面的代码:</p>
<pre><code>def is_poster_visible(poster, covered_dict):
for coord in range(poster[0], poster[0]+poster[1]):
if not covered_dict.get(coord):
return True
return False
def output_visible_posters(poster_input):
rev_input = poster_input.copy()
rev_input.reverse()
covered_dict = {}
visible_posters = []
for poster in rev_input:
if is_poster_visible(poster, covered_dict):
#if poster is visible, have to put in dict that some parts are now covered
for coord in range(poster[0], poster[0] + poster[1]):
covered_dict[coord] = True
visible_posters.append(poster)
return visible_posters
</code></pre>
<p>这将为您提供部分可见的海报列表。要获取数字,只需返回列表的长度</p>