fork download
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. public class Test
  6. {
  7. static void Main()
  8. {
  9. int[] numbers = {3,9,8,4,5,7,10};
  10. int target = 15;
  11. sum_up(new List<int>(numbers.ToList()),target);
  12. }
  13.  
  14. static void sum_up_recursive(List<int> numbers, int target, List<int> part)
  15. {
  16. int s = 0;
  17. foreach (int x in part)
  18. {
  19. s += x;
  20. }
  21. if (s == target)
  22. {
  23. Console.WriteLine("sum(" + string.Join(",", part.Select(n => n.ToString()).ToArray()) + ")=" + target);
  24. }
  25. if (s >= target)
  26. {
  27. return;
  28. }
  29. for (int i = 0;i < numbers.Count;i++)
  30. {
  31. var remaining = new List<int>();
  32. int n = numbers[i];
  33. for (int j = i + 1; j < numbers.Count;j++)
  34. {
  35. remaining.Add(numbers[j]);
  36. }
  37. var part_rec = new List<int>(part);
  38. part_rec.Add(n);
  39. sum_up_recursive(remaining,target,part_rec);
  40. }
  41. }
  42. static void sum_up(List<int> numbers, int target)
  43. {
  44. sum_up_recursive(numbers,target,new List<int>());
  45. }
  46.  
  47. }
Success #stdin #stdout 0.01s 29800KB
stdin
Standard input is empty
stdout
sum(3,8,4)=15
sum(3,5,7)=15
sum(8,7)=15
sum(5,10)=15