我以前有過類似的問題 - 我有n個元素的數組,我怎樣才能從中獲得兩個元素的所有組合,而不重複?數組中的兩個元素的組合
即,如果數組是這樣的:
var arr1 = new[] { "A", "B", "C", "D", "E"};
...結果應該是
AB
AC
AD
AE
BC
BD
BE
CD
CE
CD
你可以幫我實現這一目標?
我以前有過類似的問題 - 我有n個元素的數組,我怎樣才能從中獲得兩個元素的所有組合,而不重複?數組中的兩個元素的組合
即,如果數組是這樣的:
var arr1 = new[] { "A", "B", "C", "D", "E"};
...結果應該是
AB
AC
AD
AE
BC
BD
BE
CD
CE
CD
你可以幫我實現這一目標?
var arr1 = new[] { "A", "B", "C", "D", "E" };
var combinations = new List<string>();
foreach (var i in arr1) {
foreach (var j in arr1) {
if((int)i.ToCharArray()[0] < (int)j.ToCharArray()[0]) {
combinations.Add(i + j);
}
}
}
現在組合列表包含所有的組合!
也許這個小LINQ查詢:
var allCombinations = from str1 in arr1
from str2 in arr1
where str1.CompareTo(str2) < 0
select str1 + str2;
Console.Write(string.Join(",", allCombinations));
我最後是不同的,我認爲是你的結果一個錯字:AB,AC,AD,AE,BC,BD,BE,CD,CE,DE
爲什麼不先運行它?它顯然產生了不同於問題中提出的結果的結果。 – Andrey
考慮下面的代碼...
var arr1 = new[] { "A", "B", "C", "D", "E" };
var combinations = new List<string>();
for(int i = 0; i < arr1.Length; i++)
{
for (int j = i + 1; j < arr1.Length; j++)
{
combinations.Add(string.Format("{0}{1}", arr1[i], arr1[j]));
}
}
祝你好運!
新增截圖以供參考......
雖然我認爲@jim tollan的答案看起來更好,因爲他不需要一個額外的if語句,但這個也很糟糕。 :) – Abbas
好吧,我無力的嘗試:
var myArray = new[] { "A", "B", "C", "D", "E" };
var myCombos = new List<string>();
for (int i = 0; i < myArray.Length; i++)
{
for (int j = (i + 1); j < myArray.Length; j++)
{
myCombos.Add(myArray[i] + myArray[j]);
}
}
現在我們有:
AB AC AD AE BC BD B Ë CD CE DE
最後應該是'DE'不'CD' –
爲什麼你寫的'CD'兩次? 「DE」在哪裏? –
dup http://stackoverflow.com/questions/1272828/getting-all-the-combinations-in-an-array –