背景
一个前增加的一组序列的顺序被定义为整数集的序列s ^ 1,S ^ 2,⋯ ,小号Ñ其满足以下的:
- 每个是一个非空的子集{ 1 ,2 ,⋯ ,Ñ }。
- 对于,小号我 ∩ 小号我+ 1 = ∅,即任何两个连续集没有共同的元素。
- 对于,平均的(平均值)小号我比的严格更少小号我+ 1。
挑战
给定一个正整数N
,输出order的最长递增集合序列的长度N
。
测试用例
这些是基于Project Euler用户thundre的结果。
1 => 1 // {1}
2 => 2 // {1} {2}
3 => 3 // {1} {2} {3}
4 => 5 // {1} {2} {1,4} {3} {4}
5 => 7 // {1} {2} {1,4} {3} {2,5} {4} {5}
6 => 10 // {1} {2} {1,4} {3} {1,4,5} {2,3,6} {4} {3,6} {5} {6}
7 => 15 // {1} {2} {1,4} {3} {1,2,7} {3,4} {1,2,5,7} {4} {1,3,6,7} {4,5} {1,6,7} {5} {4,7} {6} {7}
8 => 21
9 => 29
10 => 39
11 => 49
12 => 63
13 => 79
14 => 99
15 => 121
16 => 145
17 => 171
18 => 203
19 => 237
20 => 277
21 => 321
22 => 369
23 => 419
24 => 477
25 => 537
规则
适用标准代码高尔夫球规则。有效提交的最短字节数为准。
赏金
大约4年前在Project Euler论坛上已经在此问题上进行了讨论,但是我们未能提出可证明的多项式时间算法(用表示N
)。因此,我将向首次提交的+200赏金给予奖励,或者证明其不可能。
我花了一个多星期的时间来尝试提出多项式时间算法或使用归约法的NP硬度证明。这里有人在这方面取得任何进展吗?
—
恩里科·博尔巴