fork download
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. var subsets = GetSubsets(new List<int> { 1, 2, 3 });
  12. foreach (var subset in subsets)
  13. {
  14. foreach (var item in subset)
  15. {
  16. Console.Write(item + " ");
  17. }
  18. Console.WriteLine();
  19. }
  20. }
  21.  
  22. private static List<List<int>> GetSubsets(List<int> set)
  23. {
  24. List<List<int>> subset = new List<List<int>>();
  25. subset.Add(new List<int>());
  26.  
  27. for (int i = 0; i < set.Count; i++)
  28. {
  29. List<List<int>> subsetTemp = DeepCopyListOfList(subset);
  30.  
  31. for (int j = 0; j < subsetTemp.Count; j++)
  32. {
  33. subsetTemp[j].Add(set[i]);
  34. }
  35.  
  36. var subsetTempCount = subsetTemp.Count;
  37. for (int j = 0; j < subsetTempCount; j++)
  38. {
  39. subset.Add(new List<int>(subsetTemp[j]));
  40. }
  41. }
  42. return subset;
  43. }
  44.  
  45. private static List<List<int>> DeepCopyListOfList(List<List<int>> subset)
  46. {
  47. var ret = new List<List<int>>();
  48. foreach (var list in subset)
  49. {
  50. ret.Add(new List<int>(list));
  51. }
  52. return ret;
  53. }
  54. }
  55.  
  56.  
Success #stdin #stdout 0.01s 29800KB
stdin
Standard input is empty
stdout
1 
2 
1 2 
3 
1 3 
2 3 
1 2 3