Вход


Главная страница >> Учебный процесс >> Задачник >> Олимпиадные задачи (с решениями) >> Сортировка >> Номер 8

[Назад]    [Содержание ]    [Вперед]

  


Номер 8


  Условие: Номер 8


Задача 8. Задано семейство множеств букв. Найти такое k, для которого можно построить множество, состоящее из k букв, причем каждая из них принадлежит ровно k множествам заданного семейства.

  Решение задачи: Номер 8


Решение задачи 8. Для каждой буквы заведем отдельный 'черпак', в который будем 'складывать' букву. Это можно сделать, используя массив А из 255 элементов. При этом номер 'черпака', соответствующего некоторой букве, определяется кодом буквы (известно, что любая буква кодируется некоторым двоичным числом, содержащим 8 цифр - называемых битами; в Паскале по букве определить ее код можно с помощью функции ord). При просмотре множеств подсчитаем, сколько раз встречалась каждая буква. Это делается следующим образом. При встрече буквы содержимое соответствующего ей элемента массива увеличиваем на 1. При этом начальное содержимое элементов массива - 0. После просмотра букв всех множеств элементы А определяют количество соответствующих букв, а значит и количество множеств, которым принадлежит соответствующая буква (ведь в одном множестве все элементы различны!). Используя аналогичным образом массив В из 255 элементов (больше не нужно, так как искомое число к по условию не превышает числа букв) подсчитаем количество единиц, двоек и т.д. в массиве А. Максимальное значение индекса к, для которого к=В[к] и будет решением поставленной задачи.

Назад



[Назад]    [Содержание ]    [Вперед]

  


  
За содержание страницы отвечает Гончарова М.Н.
©
Кафедра СПиКБ, 2002-2017