我的头卡住了为我的问题寻找算法。
假设我有N
数字(比如说 4)并且我想要所有 X 分区(X = N/2)
例子:
{1,2,3,4}的2-分区是:(1,2) (1,3) (1,4) (2,3) (2,4) (3,4) [简单:所有组合]
我不知道如何生成这些组合。如果你们中的某个人有一个想法(我不在乎什么语言。伪代码就足够了。我不在乎它是迭代的还是显式的)。
最好的问候, Bigbohne
我的头卡住了为我的问题寻找算法。
假设我有N
数字(比如说 4)并且我想要所有 X 分区(X = N/2)
例子:
{1,2,3,4}的2-分区是:(1,2) (1,3) (1,4) (2,3) (2,4) (3,4) [简单:所有组合]
我不知道如何生成这些组合。如果你们中的某个人有一个想法(我不在乎什么语言。伪代码就足够了。我不在乎它是迭代的还是显式的)。
最好的问候, Bigbohne
Matlab 有一个功能:
http://www.mathworks.com/help/techdoc/ref/nchoosek.html
>> x = [1,2,3,4]
x =
1 2 3 4
>> nchoosek(x, 2)
ans =
1 2
1 3
1 4
2 3
2 4
3 4
像maxwellb这样的循环结构在matlab中非常慢......
这是matlab代码,
myNums = [2,3,6,5];
for i = 1:size(myNums,2)
combinationsSet{i} = nchoosek(myNums,i);
end
foreach i in SET
foreach j in SET
if i < j, SAY "I have a partition ($i,$j)"
NEXT j
NEXT i
这取决于您的集合的迭代功能,并在 N^2 时间内运行。
对于 Matlab,请查看为您提供的函数,例如 combnk