【发布时间】:2015-10-07 06:42:14
【问题描述】:
我必须找出 'k' (k > 1) 的子集的总数,长度包含不同的元素。如果碰巧有相同的元素但具有不同的索引,则认为两个子集是不同的。请参阅下面的示例。
给定一个集合 A={1, 1, 2, 3}。
对于 k=2,可能的子集是 {1(index=1), 2}, {1(index=2), 2}, {1(index=1), 3}, {1(index=2), 3} 和 {2, 3}。总计=5。
对于 k=3,可能的子集是 {1(index=1), 2, 3}, {1(index=2), 2, 3}。总计=2。
对于 k=4,可能的子集=0。
我必须为长度为 10^5 的数组计算此值。有什么组合逻辑吗?
【问题讨论】:
-
k怎么样?你有限制吗?如果你有类似k < 1000的东西就好了。 -
k 是子集的长度。唯一的限制是元素应该是不同的并且元素应该是递增的。
-
所以它可以和
n一样大? -
k 从 2 变化到小于或等于 n 的任何值
-
我目前有一个
O(n k)算法,但似乎无法解决问题