2011-01-08 53 views
3

如何獲取count 2的字符串數組的組合? IE瀏覽器。數組項的排列

List<string> myString = {"a", "b", "c", "d", "f"}; 

的對號應該是這樣的:

ab ac ad af ba bc bd bf ca cb cd cf 等等

我不知道如何開始這個算法。如果有幫助,我寧願做一個循環而不是遞歸,因爲在我的實際實現中,我必須爲排列項目分配一個值,並將每個項目與另一個項目進行比較並選擇最高值。

+1

通常最好將諸如「C#」之類的東西放入標記中而不是主題行中。 – 2011-01-08 17:13:19

+0

謝謝,不會搜索引擎發現它更好,但因爲它出現在標題標籤? – 2011-01-08 17:16:11

+2

我不會擔心太多。搜索引擎索引非常好。讓SO團隊擔心優化。 :) – 2011-01-08 17:22:53

回答

6

使用LINQ:

var result = 
    from a in myString 
    from b in myString 
    where a != b 
    select a + b; 
1

沒有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); 
    } 
} 
4

不使用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]); 
    } 
} 
0

補充了以前的答案:

 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();