这是对创建唯一集合的Count数组的跟踪。最大的区别是唯一性的定义。
考虑A
长度数组n
。该数组仅包含正整数。例如A = (1,1,2,2)
。让我们将定义f(A)
为的所有非空连续子数组之和的集合A
。在这种情况下f(A) = {1,2,3,4,5,6}
。产生步骤f(A)
如下:
的子阵列A
是(1), (1), (2), (2), (1,1), (1,2), (2,2), (1,1,2), (1,2,2), (1,1,2,2)
。它们各自的总和为1,1,2,2,2,3,4,4,5,6
。因此,您从此列表中获得的集合是{1,2,3,4,5,6}
。
如果没有其他相同长度的数组,则我们将数组称为A
唯一数组,除了反向数组。作为示例,但是没有其他长度数组会产生相同的和集。B
f(A) = f(B)
A
f((1,2,3)) = f((3,2,1)) = {1,2,3,5,6}
3
任务
任务,对于给定n
和s
是计算该长度的独特阵列的数量。您可以假设s
介于1
和之间9
。您只需要对元素为给定整数s
或的数组进行计数s+1
。例如,如果s=1
您要计数的数组仅包含1
和2
。但是,唯一性的定义是针对相同长度的任何其他数组。举一个具体的例子[1, 2, 2, 2]
是不是因为它提供了一组相同的款项的独特[1, 1, 2, 3]
。
您应该计算数组的倒数以及数组本身(当然,只要数组不是回文)。
例子
s = 1
,n = 2,3,4,5,6,7,8,9的答案是:
4, 3, 3, 4, 4, 5, 5, 6
对于s = 1
,长度为4的唯一数组为
(1, 1, 1, 1)
(2, 1, 1, 2)
(2, 2, 2, 2)
s = 2
,n = 2,3,4,5,6,7,8,9的答案是:
4, 8, 16, 32, 46, 69, 121, 177
一个不唯一的数组的示例s = 2
是:
(3, 2, 2, 3, 3, 3).
这有一组相同的款项两者的:(3, 2, 2, 2, 4, 3)
和(3, 2, 2, 4, 2, 3)
。
s = 8
,n = 2,3,4,5,6,7,8,9的答案是:
4, 8, 16, 32, 64, 120, 244, 472
得分了
对于给定n
的代码,您的代码应输出s
从1
to的所有值的答案9
。您的分数是n
在一分钟内完成的最高分。
测试中
我将需要在ubuntu机器上运行您的代码,因此请尽可能详细地说明如何编译和运行您的代码。
排行榜
- 在Haskell中,Christian Sievers的n = 13(42秒)
s
啊 它代表什么?