2016-03-22 15 views
-2

Girdi olarak [] karakterini kabul eden ve EDIT1 altındaki alt kısımda gösterildiği gibi çıktı veren bir güç ayar fonksiyonu oluşturmak istiyorum.Gç dizesi kümesi (girdi olarak) C#

Ben kümesi için bana çıkış verir ben işlevi Üstü

Edit1

olarak bu işlevi kullanamazsınız Bu

private static List<string> PowerSet(string[] input) 
{ 
    int n = input.Length; 
    // Power set contains 2^N subsets. 
    int powerSetCount = 1 << n; 
    var ans = new List<string>(); 

    for (int setMask = 0; setMask < powerSetCount; setMask++) 
    { 
     var s = new StringBuilder(); 
     for (int i = 0; i < n; i++) 
     { 
      // Checking whether i'th element of input collection should go to the current subset. 
      if ((setMask & (1 << i)) > 0) 
      { 
       s.Append(input[i]); 
      } 
     } 
     ans.Add(s.ToString()); 
    } 

    return ans; 
} 

geldi demek { 'a', 'b' olarak görünecek çıktıya ihtiyacım var

"" 
"a" 
"b" 
"ab" 

{} 
{"a"} 
{"b"} 
{"a","b"} 
+0

"Params string [] args" ifadesini argüman olarak mı kastediyorsunuz? Sonra 1,2,3, ... n giriş argümanlarını kullanabilirsiniz. Her argüman için mevcut uygulamanızı kullanabilirsiniz. –

+0

Sorumu düzenledim. – Artiga

+0

Gerçekten öğelere nasıl yeni öğeler ekleyeceğinizi soruyor musunuz? –

cevap

1

Parametre olarak bir dizi dize değeri göndermek için param anahtar sözcüğünü kullanabilirsiniz. Onlar da dizi dizisi olarak hareket edebilirler. İşte örnek bir uygulama.

static void Main(string[] args) 
{ 
    var list = PowerSet("node1", "node2", "node3"); 
    foreach (var item in list) 
    { 
     Console.WriteLine(item); 
    } 
    Console.ReadLine(); 
} 

private static List<string> PowerSet(params string[] input) 
{ 
    if (input == null) 
    { 
     throw new ArgumentNullException("input"); 
    } 

    // Power set contains 2^N subsets. 
    var powerSetCount = 1 << input.Length; 

    var returnValue = new List<string>(); 

    for (var setMask = 0; setMask < powerSetCount; setMask++) 
    { 
     var stringBuilder = new StringBuilder(); 
     for (var i = 0; i < input.Length; i++) 
     { 
      // Checking whether i'th element of input collection should go to the current subset. 
      if ((setMask & (1 << i)) > 0) 
       stringBuilder.Append(input[i]); 
     } 
     returnValue.Add(stringBuilder.ToString()); 
    } 
    return returnValue; 
} 
+0

Girdi kümesi arttıkça eleman sayısı arttığında çıktının okunması zor olacaktır. elemanlar boşluk olmadan bitişik olduğu için. – Artiga

İlgili konular