在 Python 中找到将所有球移动到每个盒子的最少操作次数的程序
假设我们有一个名为 box 的二进制字符串,其中 box[i] 是 '0' 表示第 i 个盒子是空的,而 '1' 表示它包含一个球。现在,在一次操作中,我们可以将一个球从一个盒子移动到一个相邻的盒子。这样做之后,有些盒子里可能会有不止一个球。我们必须找到一个大小为 n 的数组 answer,其中 answer[i] 是将所有球移动到第 i 个盒子所需的最少操作次数。
因此,如果输入类似于 box = "1101",那么输出将是 [4, 3, 4, 5]
要将所有球放在第一个盒子上,我们必须通过一次操作从 box2 中取出并通过三个操作从最后一个球中取出,因此总共需要进行 4 次操作。
要将所有球放在第二个盒子上,我们必须通过一次操作从 box1 中取出,通过两次操作从最后一个球中取出,因此总共需要进行 3 次操作。
要将所有球放在第三个盒子上,我们必须从 box2 和 last 各取一个操作,从 box1 取两个操作,所以总共 4 个操作。
要将所有球放在最后一个盒子上,我们必须通过三个操作从 box1 中取出,通过两个操作从 box2 中取出,所以总共有 5 个操作。
示例
让我们看看以下实现以获得更好的理解 -
def solve(boxes):left = 0
right = 0
dist = 0
for i in range(len(boxes)):
if boxes[i] == "1":
dist += i
if i == 0:
left += 1
else:
right += 1
arr = [dist]
for i in range(1, len(boxes)):
arr.append(arr[i-1] + left - right)
if boxes[i] == "1":
left += 1
right -= 1
return arr
boxes = "1101"
print(solve(boxes))
输入
"1101"输出结果
[4, 3, 4, 5]
以上是 在 Python 中找到将所有球移动到每个盒子的最少操作次数的程序 的全部内容, 来源链接: utcz.com/z/343747.html