我的头脑无法找到解决问题的算法。
假设我有N
个数字(比方说4)我想拥有所有X分区(X = N / 2)
示例:
{1,2,3,4}的2-分区是:(1,2)(1,3)(1,4)(2,3)(2,4)(3,4)[简单] :所有组合]我不知道如何生成这些组合。如果你有人有一个想法(我不在乎什么语言。伪代码是完全足够的。我不在乎它是迭代还是显式)。
祝你好运, Bigbohne
答案 0 :(得分:5)
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中非常慢......
答案 1 :(得分:1)
这是matlab代码,
myNums = [2,3,6,5];
for i = 1:size(myNums,2)
combinationsSet{i} = nchoosek(myNums,i);
end
答案 2 :(得分:0)
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