gpt4 book ai didi

python - 遍历 python 中的循环?

转载 作者:太空狗 更新时间:2023-10-29 21:03:31 31 4
gpt4 key购买 nike

我试图在 coderbyte 的简单部分解决这个问题,提示是:

让函数 ArrayAdditionI(arr) 获取存储在 arr 中的数字数组,如果数组中的任何数字组合加起来等于数组中的最大数字,则返回字符串 true,否则返回字符串 false。例如:如果 arr 包含 [4, 6, 23, 10, 1, 3] 输出应该返回真,因为 4 + 6 + 10 + 3 = 23。数组不会为空,不会包含所有相同的元素,并且可能包含负数。

这是我的解决方案。

def ArrayAddition(arr):
arr = sorted(arr, reverse=True)
large = arr.pop(0)
storage = 0
placeholder = 0
for r in range(len(arr)):
for n in arr:
if n + storage == large: return True
elif n + storage < large: storage += n
else: continue
storage = 0
if placeholder == 0: placeholder = arr.pop(0)
else: arr.append(placeholder); placeholder = arr.pop(0)
return False

打印 ArrayAddition([2,95,96,97,98,99,100])

我什至不确定这是否正确,但它似乎涵盖了我插入的所有数字。我想知道是否有更好的方法通过我一无所知的算法来解决这个问题。我在想 for within for within for within a for 等循环可以解决问题,但我不知道该怎么做。

我的想法是用 A+B、A+C、A+D ... A+B+C ... A+B+C+D+E 来完成这个

例如)

for i in range(len(arr):
print "III: III{}III".format(i)
storage = []
for j in range(len(arr):
print "JJ: II({}),JJ({})".format(i,j)

for k in range(len(arr):
print "K: I{}, J{}, K{}".format(i,j,k)

我到处搜索并找到了 itertool 的建议,但我想知道是否有一种方法可以更原始地编写这段代码。

谢谢。

最佳答案

递归解决方案:

def GetSum(n, arr):
if len(arr) == 0 and n != 0:
return False
return (n == 0 or
GetSum(n, arr[1:]) or
GetSum(n-arr[0], arr[1:]))

def ArrayAddition(arr):
arrs = sorted(arr)
return GetSum(arrs[-1], arrs[:-1])

print ArrayAddition([2,95,96,97,98,99,100])

当所需总和为非零且数组中没有项目时,GetSum 函数返回 False。然后检查 3 种情况:

  1. 如果所需总和 n 为零,则目标已实现。
  2. 如果我们可以在删除第一个项目后与剩余项目求和,那么目标就达到了。
  3. 如果我们能得到所需的总和减去列表其余部分的列表的第一个元素,则目标就实现了。

关于python - 遍历 python 中的循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20416881/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com