这是对创建唯一集合的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 唯一数组,除了反向数组。作为示例,但是没有其他长度数组会产生相同的和集。Bf(A) = f(B)Af((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从1to的所有值的答案9。您的分数是n在一分钟内完成的最高分。
测试中
我将需要在ubuntu机器上运行您的代码,因此请尽可能详细地说明如何编译和运行您的代码。
排行榜
- 在Haskell中,Christian Sievers的n = 13(42秒)
s啊 它代表什么?