打印 Aitken 数组的Python程序
给定一个数字 n。任务是将 Aikten 的数组打印到 n。
例子:
Input: 5
Output:
[1]
[1, 2]
[2, 3, 5]
[5, 7, 10, 15]
[15, 20, 27, 37, 52]
Input: 7
Output:
[1]
[1, 2]
[2, 3, 5]
[5, 7, 10, 15]
[15, 20, 27, 37, 52]
[52, 67, 87, 114, 151, 203]
[203, 255, 322, 409, 523, 674, 877]
要首先打印它,我们按照以下步骤操作:
- 我们在第一行写 1。
- 接下来,我们用前一行的最右边的值填充每一行的最左边的值。
- 每行的下一个元素由简单规则填充,即特定行的每个元素是该行左侧的值与同一位置上一行的值的总和。
为了更好地理解,让我们考虑上面例子的第三行,由元素 2、3、5 组成。这一行的最左边的值是上面行的最右边的值,即 2。下一个值 3 是值的总和如果该行 (2) 和上一行 (1) 的相同位置的值,则左侧。同样,5 是 3 和 2 的总和。
下面是实现。
# Python program to print
# Aitken's array
from queue import Queue
from functools import reduce, lru_cache
# for dynamic programming
# Recursive function to print the
# Aitken's array.
@lru_cache()
def rec(n):
# Base case
if n == 1:
print([1])
return [1]
array = [rec(n-1)[-1]]
for k in range(n-1):
array.append(array[k] + rec(n-1)[k])
print(array)
return array
# Driver's code
rec(7)
输出:
[1]
[1, 2]
[2, 3, 5]
[5, 7, 10, 15]
[15, 20, 27, 37, 52]
[52, 67, 87, 114, 151, 203]
[203, 255, 322, 409, 523, 674, 877]