【发布时间】:2010-09-17 12:09:10
【问题描述】:
我正在编写一个算法来生成此类数组的所有可能排列:
n = 长度
k = 数组中 1 的个数
所以这意味着如果我们有 k 个 1,我们将在数组中有 n-k 个 0。
例如: n = 5; k = 3;
所以显然这个数组有 5 种选择 3 种可能的排列,因为
n!/(k!(n-k)!
5!/(3!2!) = (5*4)/2 = 10
数组的可能值
以下是所有值:
11100
11010
11001
10110
10101
10011
01110
01101
01011
00111
我猜我应该使用递归算法,但我只是没有看到它。我正在用 C++ 编写这个算法。
任何帮助将不胜感激!
【问题讨论】:
-
我必须投票结束,因为你需要做的就是选择 1 的位置。这基本上是从 n 中选择 k 个元素。