在Python中查找生成数组中的最大值的程序
假设有一个数字n。我们必须以以下方式生成长度为n + 1的数组A –
- A [0] = 0
-
A [1] = 1
-
如果 2 <= 2 * i <= n,则 A [2 * i] = A [i]
-
如果 2 <= 2 * i + 1 <= n,则 A [2 * i + 1] = A [i] + A [i + 1]
最后,我们必须在nums数组中找到最大数字。
因此,如果输入类似于n = 5,则输出将为3,因为
- A [0] = 0
-
A [1] = 1
-
A [2] = A [1] = 1
-
A [3] = A [1] + A [2] = 1 + 1 = 2
-
A [4] = A [2] = 1
-
A [5] = A [2] + A [3] = 1 + 2 = 3
-
A [6] = A [3] = 2
所以最大值为3
要解决此问题,我们将遵循以下步骤 –
- A:从0到n的新列表
-
对于A中的每个元素i,执行以下操作 –
- 如果i等于0或i等于1,则
- 转到下一次迭代
- 否则,当i为偶数时,然后
- A [i] = A [i // 2]
- 否则
- A [i] = A [i // 2] + A [(i // 2) + 1]
- 如果i等于0或i等于1,则
- 返回A的最大元素
更多Python相关文章,请阅读:Python 教程
示例(Python)
让我们看以下实现以获得更好的理解 –
def solve(n):
A = list(range(0,n+1))
for i in A:
if i == 0 or i == 1:
continue
elif i%2 == 0:
A[i] = A[i//2]
else:
A[i] = A[i//2] + A[(i//2) + 1]
return max(A)
n = 5
print(solve(n))
输入
5
输出
3