Загрузка данных


using System;
using System.Collections.Generic;

class Program
{
    static List<int> partition = new List<int>();
    static int count = 0;

    static void Main()
    {
        Console.Write("Введите n: ");
        int n = int.Parse(Console.ReadLine());

        Console.WriteLine("Разбиения числа " + n + ":");
        GeneratePartitions(n, n);

        Console.WriteLine($"\nP({n}) = {count}");
        Console.ReadKey();
    }

    static void GeneratePartitions(int remaining, int maxPart)
    {
        if (remaining == 0)
        {
            // Вывод разбиения
            for (int i = 0; i < partition.Count; i++)
            {
                Console.Write(partition[i]);
                if (i < partition.Count - 1) Console.Write(" + ");
            }
            Console.WriteLine();
            count++;
            return;
        }

        for (int part = Math.Min(maxPart, remaining); part >= 1; part--)
        {
            partition.Add(part);
            GeneratePartitions(remaining - part, part);
            partition.RemoveAt(partition.Count - 1);
        }
    }
}