using System;
using System.Collections.Generic;
using System.Linq;
public class Test
{
static void Main()
{
int[] numbers = {3,9,8,4,5,7,10};
int target = 15;
sum_up(new List<int>(numbers.ToList()),target);
}
static void sum_up_recursive(List<int> numbers, int target, List<int> part)
{
int s = 0;
foreach (int x in part)
{
s += x;
}
if (s == target)
{
Console.WriteLine("sum(" + string.Join(",", part.Select(n => n.ToString()).ToArray()) + ")=" + target);
}
if (s >= target)
{
return;
}
for (int i = 0;i < numbers.Count;i++)
{
var remaining = new List<int>();
int n = numbers[i];
for (int j = i + 1; j < numbers.Count;j++)
{
remaining.Add(numbers[j]);
}
var part_rec = new List<int>(part);
part_rec.Add(n);
sum_up_recursive(remaining,target,part_rec);
}
}
static void sum_up(List<int> numbers, int target)
{
sum_up_recursive(numbers,target,new List<int>());
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglzdGF0aWMgdm9pZCBNYWluKCkKewogICAgaW50W10gbnVtYmVycyA9IHszLDksOCw0LDUsNywxMH07CiAgICBpbnQgdGFyZ2V0ID0gMTU7CiAgICBzdW1fdXAobmV3IExpc3Q8aW50PihudW1iZXJzLlRvTGlzdCgpKSx0YXJnZXQpOwp9CgpzdGF0aWMgdm9pZCBzdW1fdXBfcmVjdXJzaXZlKExpc3Q8aW50PiBudW1iZXJzLCBpbnQgdGFyZ2V0LCBMaXN0PGludD4gcGFydCkKewogICBpbnQgcyA9IDA7CiAgIGZvcmVhY2ggKGludCB4IGluIHBhcnQpCiAgIHsKICAgICAgIHMgKz0geDsKICAgfQogICBpZiAocyA9PSB0YXJnZXQpCiAgIHsKICAgICAgICBDb25zb2xlLldyaXRlTGluZSgic3VtKCIgKyBzdHJpbmcuSm9pbigiLCIsIHBhcnQuU2VsZWN0KG4gPT4gbi5Ub1N0cmluZygpKS5Ub0FycmF5KCkpICsgIik9IiArIHRhcmdldCk7CiAgIH0KICAgaWYgKHMgPj0gdGFyZ2V0KQogICB7CiAgICAgICAgcmV0dXJuOwogICB9CiAgIGZvciAoaW50IGkgPSAwO2kgPCBudW1iZXJzLkNvdW50O2krKykKICAgewogICAgICAgICB2YXIgcmVtYWluaW5nID0gbmV3IExpc3Q8aW50PigpOwogICAgICAgICBpbnQgbiA9IG51bWJlcnNbaV07CiAgICAgICAgIGZvciAoaW50IGogPSBpICsgMTsgaiA8IG51bWJlcnMuQ291bnQ7aisrKQogICAgICAgICB7CiAgICAgICAgICAgICByZW1haW5pbmcuQWRkKG51bWJlcnNbal0pOwogICAgICAgICB9CiAgICAgICAgIHZhciBwYXJ0X3JlYyA9IG5ldyBMaXN0PGludD4ocGFydCk7CiAgICAgICAgIHBhcnRfcmVjLkFkZChuKTsKICAgICAgICAgc3VtX3VwX3JlY3Vyc2l2ZShyZW1haW5pbmcsdGFyZ2V0LHBhcnRfcmVjKTsKICAgfQp9CnN0YXRpYyB2b2lkIHN1bV91cChMaXN0PGludD4gbnVtYmVycywgaW50IHRhcmdldCkKewogICAgc3VtX3VwX3JlY3Vyc2l2ZShudW1iZXJzLHRhcmdldCxuZXcgTGlzdDxpbnQ+KCkpOwp9Cgp9