如何为给定字符串键入集合

可能重复:
如何获得子集的所有可能组合?

我正在尝试为给定字符串键入集合,例如“123”会给{1} {2} {3} {13} {23} {12} {123} {}但我的代码会给我1 1请任何人告诉我为什么,请帮助我修复它谢谢大家

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TestAAD { class Program { static List sets = new List(); static int len = 0; private static void Generte_Sets(string str, int i) { sets.Add(str[i].ToString()); if (i < len) Generte_Sets(str, i + 1); else { for (int j = 0; j < sets.Count; j++) Console.Write(sets[j]); Console.WriteLine(); } sets.Remove(str[i].ToString()); if (i < len) Generte_Sets(str, i + 1); else { for (int j = 0; j < sets.Count; j++) Console.Write(sets[j]); Console.WriteLine(); } } static void Main(string[] args) { string set = "123"; Generte_Sets(set, 0); len = set.Length; for (int i = 0; i < sets.Count; i++) { Console.WriteLine(sets[i]); } } } 

}

我需要帮助才能输入我需要快速帮助的套装谢谢All

 class Program { static List sets = new List(); static int len = 0; private static void Generte_Sets(string str, int i) { sets.Add(str[i].ToString()); **if (i + 1 < len)** Generte_Sets(str, i + 1); else { for (int j = 0; j < sets.Count; j++) Console.Write(sets[j]); Console.WriteLine(); } sets.Remove(str[i].ToString()); **if (i + 1 < len)** Generte_Sets(str, i + 1); else { for (int j = 0; j < sets.Count; j++) Console.Write(sets[j]); Console.WriteLine(); } } static void Main(string[] args) { string set = "123"; **len = set.Length;** Generte_Sets(set, 0); for (int i = 0; i < sets.Count; i++) { Console.WriteLine(sets[i]); } } } 
Interesting Posts