• Как разбить число?

    @MaximKAI
    /// <param name="remain">Оставшаяся часть нашего числа</param>
    /// <param name="maxTerm">Максимальный размер слагаемого</param>
    /// <param name="terms">Список слагаемых</param>
    static void Solve(int remain, int maxTerm, List<int> terms)
    {
        //Если от числа ничего не осталось, выводим все слагаемые и выходим из функции
        if (remain == 0)
        {
            Console.WriteLine(string.Join(" + ", terms));
            return;
        }
    
        //Перебираем возможные слагаемые от наибольшего до 1
        for (int term = maxTerm; term >= 1; term--)
        {
            if (term <= remain)
            {
                terms.Add(term);
                Solve(remain - term, term, terms);
                terms.Remove(term);
            }
        }
    }


    Вызываем метод:
    var partitions = new List<int>();
    Solve(n, n, partitions); //n - число для которого нужно найти разбиения
    Ответ написан
    Комментировать
  • Как в C# с помощью Linq схлопнуть данные?

    @MaximKAI
    Возможно автор имел в виду что-то похожее. В результате получаем список из анонимных объектов с id, суммой и списком строк sku:

    class Order
        {
            public int id;
            public string sku;
            public int sum;
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                List<Order> orders = new List<Order>()
                {
                    new Order()
                    {
                        id = 1,
                        sku = "AR",
                        sum = 100
                    },
                    new Order()
                    {
                        id = 2,
                        sku = "PR",
                        sum = 200
                    },
                    new Order()
                    {
                        id = 1,
                        sku = "VR",
                        sum = 150
                    }
                };
    
                var result = orders.GroupBy(i => i.id).
                    Select(i => new
                    {
                        id = i.Key,
                        sum = i.Sum(s => s.sum),
                        sku = i.Select(s => s.sku)
                    });
            }
        }
    Ответ написан
    Комментировать