我正在努力應對這個我需要寫的算法。我正在使用C#。C#中的置換算法
說我有一個List<Bag>
,我有一個List<Lunch>
。 我需要編寫一個算法來枚舉所有行李中的所有午餐排列。
例如,假設有3次午餐和2袋:
// Permutation 1
Bag 1, Lunch 1
Bag 2, Lunch 1
// Permutation 2
Bag 1, Lunch 1
Bag 2, Lunch 2
// Permutation 3
Bag 1, Lunch 1
Bag 2, Lunch 3
// Permutation 4
Bag 1, Lunch 2
Bag 2, Lunch 1
// Permutation 5
Bag 1, Lunch 2
Bag 2, Lunch 2
// Permutation 6
Bag 1, Lunch 2
Bag 2, Lunch 3
// Permutation 7
Bag 1, Lunch 3
Bag 2, Lunch 1
// Permutation 8
Bag 1, Lunch 3
Bag 2, Lunch 2
// Permutation 9
Bag 1, Lunch 3
Bag 2, Lunch 3
兩個排列Bag 1 Lunch 1 and Bag 2 Lunch 2
和Bag 1 Lunch 2 and Bag 2 Lunch 1
是不同的,因爲包包有不同的能力,因此,他們將都需要加以列舉。
行李和午餐的數量可以是任意數量。
我創建了一個名爲BagLunch
的課程,其中包含一對袋子和午餐。上面給出的示例列表將存儲在List<BagLunch>
中。
謝謝。
我不明白你的例子。有幾行列出了'Bag 1,Lunch 1'。排列中有重複的規則是什麼? – 2012-02-06 22:28:13
對不起,我添加了間距。每個組都是一個排列組合。 – user1002358 2012-02-06 22:29:09
那些不是排列組合.. – duedl0r 2012-02-06 22:31:37