TopCoder中的示例违反了约束

时间:2018-02-08 16:42:58

标签: algorithm combinations dynamic-programming

我试图理解TopCoder上的问题DivFreed2

它专门指定数组

  • 数组的长度为n。
  • 每个元素都是介于1和k之间的整数。
  • 每当A和B是数组的两个连续元素(按此顺序)时,我们有(A< = B)或(A mod B!= 0)。

我的问题是关于给定的第一个例子的第三个约束:

2
2
Returns: 3
The three arrays Hero likes are {1,1}, {1,2}, and {2,2}.

答案不应该是4吗?数组{2,1}发生了什么?有三个数组可以按照上面提到的约束生成,但是thre也是第四个可以生成的数组{2,1}。问题在于,我们只能写出数字的唯一组合。 为什么我们不在可以有效的数组列表中包含{2,1}?

所有指出的问题都是数字排列的约束。

我在这里遗漏了什么吗?一组数字是否意味着独特的组合?

1 个答案:

答案 0 :(得分:1)

好吧,2 > 12 % 1 == 0因此

!(2 <= 1) && !(2 % 1 != 0)

因此{2, 1}不是解决方案。