【发布时间】:2021-01-06 10:55:43
【问题描述】:
这是我最近采访的一家公司提出的问题。前提是,电影院必须遵循距离规则,即每两个坐着的人之间必须有至少六英尺的距离。我们得到一个包含 N 个非负整数的列表,其中 list[k] 是座位 k 和座位 k + 1 之间的距离,单排有 N+1 个座位。我们需要弄清楚有效座位安排的数量。
编辑:经过深思熟虑,这就是我目前得到的结果
def count(seats):
# No seats then no arrangements can be made
if seats == 0:
return 0
elif seats == 1:
# 1 seat means 2 arrangements -- leave it empty (skip) or occupy it
return 2
if list[seats-1] < 6:
return count(seats - 1) + counts(seats - k(seats))
else:
return count(seats - 1)
回想一下,list 将包含座位 i 和座位 i+1 之间的距离,因此在每个座位上,我都会检查当前座位与前一个座位之间的距离是否 >= 6 或 = 6,所以无论我是否占用当前座位,我的子问题座位数都会缩小一个。
【问题讨论】:
-
如果您可以分享您在代码中采用的方法,这可能会有所帮助。
-
@peacetype 我想多了。请问现在可以看一下吗?
标签: recursion dynamic-programming memoization