2010-05-09 44 views
1

我正在尋找在C#中的算法,解決了一個組合數學問題:組合學分組

假設我有對象1,2,3,4

我希望得到所有可能的方式來組織這些對象在多個組中,每次都包含所有對象。訂單並不重要。例如:

< 1,2,3,4-> < 1,2/3,4> < 1,3/2,4> < 1,4/3,2> < 1,2- ,四分之三> < 1,2,4/3> < 1,3,4/2> < 2,3,4/1> < 1,2/3/4> < 1,3/2/4> < 1,4/3/2> < 2,3/1/4> < 4,3/1/2> < 1/2/3/4>

在第一種情況下,有一個組包含所有4個對象。接下來是兩個組以多種不同方式包含所有對象的案例。最後一種情況是4組,每組只包含一個對象。

+0

「<1,2/3/4>」和其他大小爲3的分組又如何呢? – polygenelubricants 2010-05-09 08:30:33

回答

0

我想algorythm是常見的,而不是C#algorythm。 有一些方法如何組合所有可能的方式(有一些限制)here

1

開始於< 1>。通過添加每個新對象,對於以前的每個解決方案,它都可以進入任何組或它自己的新組。

1: <1> 
12: <1> => {<1,2> <1|2>} 
123: <1,2> => {<1,2,3> <1,2|3>}, <1|2> => {<1,3|2> <1|2,3> <1|2|3>} 
1234: <1,2,3> => {<1,2,3,4> <1,2,3|4>}, 
     <1,2|3> => {<1,2,4|3> <1,2|3,4> <1,2|3|4>}, 
     <1,3|2> => {<1,3,4|2> <1,3|2,4> <1,3|2|4>}