如何獲取count 2的字符串數組的組合? IE瀏覽器。數組項的排列
List<string> myString = {"a", "b", "c", "d", "f"};
的對號應該是這樣的:
ab ac ad af ba bc bd bf ca cb cd cf
等等
我不知道如何開始這個算法。如果有幫助,我寧願做一個循環而不是遞歸,因爲在我的實際實現中,我必須爲排列項目分配一個值,並將每個項目與另一個項目進行比較並選擇最高值。
如何獲取count 2的字符串數組的組合? IE瀏覽器。數組項的排列
List<string> myString = {"a", "b", "c", "d", "f"};
的對號應該是這樣的:
ab ac ad af ba bc bd bf ca cb cd cf
等等
我不知道如何開始這個算法。如果有幫助,我寧願做一個循環而不是遞歸,因爲在我的實際實現中,我必須爲排列項目分配一個值,並將每個項目與另一個項目進行比較並選擇最高值。
使用LINQ:
var result =
from a in myString
from b in myString
where a != b
select a + b;
沒有LINQ,你可以使用一個嵌套的循環:
var permutations = new List<string>();
for(int i = 0; i < myString.Count; i++)
{
for(int j = 0; j < myString.Count; j++)
{
if(i == j)
continue;
var permutation = string.Format("{0}{1}", myString[i], myString[j]);
permutations.Add(permutation);
}
}
不使用LINQ
List<string> myString = {"a", "b", "c", "d", "f"};
List<String> result = new List<String>();
for (int i = 0; i < myString.Count; i++)
{
for (int j = 0; j < myString.Count; j++)
{
if (i == j)
continue;
result.Add(myString[i] + myString[j]);
}
}
補充了以前的答案:
string[] arreglo = new string[6];
arreglo[0] = "a";
arreglo[1] = "b";
arreglo[2] = "c";
arreglo[3] = "d";
arreglo[4] = "e";
arreglo[5] = "f";
var permutations = new List<string>();
for (int i = 0; i < arreglo.Length; i++)
{
for (int j = 0; j < arreglo.Length; j++)
{
for (int k = 0; k < arreglo.Length; k++)
{
for (int l = 0; l < arreglo.Length; l++)
{
for (int m = 0; m < arreglo.Length; m++)
{
for (int n = 0; n < arreglo.Length; n++)
{
if (i ==j ||j == k||i == k||k == l||i == l||j == l||i == m||j == m||k == m||l == m||i == n||j == n||k == n||l == n||m == n)
continue;
var permutation = string.Format("{0}{1}{2}{3}{4}{5}", arreglo[i], arreglo[j], arreglo[k], arreglo[l], arreglo[m],arreglo[n]);
permutations.Add(permutation);
}
}
}
}
}
}
foreach(var element in permutations)
{
Console.WriteLine(element);
}
Console.ReadLine();
通常最好將諸如「C#」之類的東西放入標記中而不是主題行中。 – 2011-01-08 17:13:19
謝謝,不會搜索引擎發現它更好,但因爲它出現在標題標籤? – 2011-01-08 17:16:11
我不會擔心太多。搜索引擎索引非常好。讓SO團隊擔心優化。 :) – 2011-01-08 17:22:53