在Python中查找生成数组中的最大值的程序

在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]
  • 返回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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程