Пример #1
0
 private static void PrintHappySubsets(TreeMultiSet <List <int> > set)
 {
     foreach (var subset in set)
     {
         for (int i = 0; i < subset.Value; i++)
         {
             foreach (var element in subset.Key)
             {
                 Console.Write("{0} ", element);
             }
             if (i < subset.Value - 1)
             {
                 Console.WriteLine();
             }
         }
         Console.WriteLine();
     }
 }
Пример #2
0
        static void Main(string[] args)
        {
            int    number    = int.Parse(Console.ReadLine());
            string inputLine = Console.ReadLine();

            string[] tokens = inputLine.Split(' ');

            int[] array = new int[tokens.Length];
            for (int i = 0; i < array.Length; i++)
            {
                array[i] = int.Parse(tokens[i]);
            }

            Comparer <List <int>, int> comparer = new Comparer <List <int>, int>();
            TreeMultiSet <List <int> > set      = new TreeMultiSet <List <int> >(comparer);

            FindHappySequences(array, number, set);

            PrintHappySubsets(set);
        }
Пример #3
0
 private static void FindHappySequences(int[] array, int number, TreeMultiSet <List <int> > set)
 {
     for (int startIndex = 0; startIndex < array.Length; startIndex++)
     {
         int        currentSum  = 0;
         List <int> newSequence = new List <int>();
         for (int endIndex = startIndex; endIndex < array.Length; endIndex++)
         {
             int newElement = array[endIndex];
             currentSum += newElement;
             newSequence.Add(newElement);
             if (currentSum == number)
             {
                 List <int> happySequence = new List <int>(newSequence);
                 set.Add(happySequence);
                 if (set.AllElementsCount() == 11)
                 {
                     set.RemoveLargestElement();
                 }
             }
         }
     }
 }