我想發送一個數字列表的方法,並通過將數字彼此相鄰來獲得我從這個列表中產生的所有可能的數字組合。組合造物主?
例如,對於數字{1, 2, 3}
我會以回報:
{1, 2, 3, 12, 13, 21, 23, 31, 32, 123, 132, 213, 231, 312, 321}
此代碼爲例子(我還沒有完成),僅「知道」來處理包含在3號名單他們。
private static void M1()
{
var intList = new List<int>() { 1, 2, 3 };
var resultList = AllPossibleCombinations(intList);
}
private static object AllPossibleCombinations(List<int> List)
{
var result = new List<int>();
result.Add(List[0]);
result.Add(List[1]);
result.Add(List[2]);
result.Add(List[0] * 10 + List[1]);
result.Add(List[1] * 10 + List[2]);
result.Add(List[0] * 10 + List[2]);
result.Add(List[1] * 10 + List[0]);
result.Add(List[2] * 10 + List[1]);
result.Add(List[2] * 10 + List[0]);
return result;
}
我該如何寫更通用的東西?我怎樣才能得到不同數量的元素的列表,並給出所有可能的組合?
你對這個話題做了什麼樣的研究?這個問題的解決方案很容易獲得,因爲這是一個相當普遍的問題。 – Servy
有可能是'N! + N((N-1)!)+ N((N-2)!)+ ...'('3 * 2 * 1 + 3(2 * 1)+3(1)')你可以循環多次並考慮數字長度。或以某種方式使用遞歸。 –
不久前想到了它。我想知道他們是否是一個知道如何處理組合的特殊班級,或者是否有人知道處理這個問題的方法。 – asker22