Вверх ↑
Ответов: 5446
Рейтинг: 323
#1: 2008-02-09 11:50:14 ЛС | профиль | цитата
Для тех, кто не успел, не смог или не захотел принять участие в секции "Алгоритмы" вчера (то есть - на конкурсной основе), выкладываю здесь задачи этой секции.
Обсуждение задач и решений приветствуется.



Задача 1. РИМСКИЕ ЦИФРЫ
Создайте схему, переводящую числа, записанные римскими цифрами, в числа, записанные арабскими цифрами.

СПРАВКА: (взято из [url=http://ru.wikipedia.org/wiki/Римские цифры]Wikipedia[/url])
Римские цифры: Цифры, использовавшиеся древними римлянами в своей непозиционной системе
счисления.

Натуральные числа записываются при помощи повторения этих цифр. При этом, если
большая цифра стоит перед меньшей, то они складываются (принцип сложения), если
же меньшая — перед большей, то меньшая вычитается из большей (принцип
вычитания). Последнее правило применяется только во избежание четырёхкратного
повторения одной и той же цифры.

ЧислоРимское обозначение
1I
5V
10X
50L
100C
500D
1000M


Входные данные: файл Roman.in следующего формата:


  • Строка 1: N - число строк с числами (N <= 100)
  • Строки 2..N+1: Числа, записанные римскими цифрами

Выходные данные:
файл Roman.out, содержащий N строк. Каждая строка содержит либо число, записанное арабскими циффрами,
либо слово "NONUMBER" (входная строка содержит недопустимые символы), либо слово "BADNUMBER" (ошибка в записи числа).

Ограничения:
Время: 2.0 секунды


Задача 2. ТЕЛЕФОННЫЕ НОМЕРА
Создайте схему, находящую кратчайшую последовательность слов (т.е., с наименьшим количеством слов),
соответствующую заданному номеру телефона и списку слов. Соответствие букв и цифр описывается следующей схемой:

1 ij2 abc3 def
4 gh5 kl6 mn
7 prs8 tuv9 wxy
0 oqz


Входные данные: файл Phone.in следующего формата:


  • Строка 1: N - номер телефона
  • Строка 2: M - длинна "словаря"
  • Строки 3..M+2: словарь (одно слово на строку)

Выходные данные: файл Phone.out, содержащий либо фразу, соответствующую номеру телефона,
либо слово "NOSOLUTION", если искомую фразу подобрать невозможно.

Ограничения:
Время: 2.0 секунды


Задача 3. КОРОВЫ
У фермера Джона N (2 <= N <= 50) различных коров, пронумерованных от 1 до N, и он хочет знать,
какие две из них больше всего похожи друг на друга. Он сделал цифровые фотографии размером 5х7 каждой коровы,
и хочет, чтобы вы помогли ему сравнить их.

Фотографии показывают расположение чёрных и белых пятен коровы. Вот фотографии двух разных коров:
     Корова 1      Корова 2
..X.... ...X...
.XXX... ..XX...
.XX.... .XX....
.....X. .XX..X.
.X...X. .X...X.
("X" - чёрное пятно, "." - белое)

Чтобы сравнить коров, сравнивают каждое из пятен одной коровы с соответствующим пятном другой.
"Коэффициент схожести" увеличивается на 1 для каждой совпадающей пары пятен. Пара коров, изображённых выше,
имеют коэффициент 30, так как только 5 пятен не совпадают (помечены "#" ниже):

         ++##+++
+#+++++
+++++++
+##++++
+++++++

По заданному набору коров, найдите пару с наибольшим "коэффициентом схожеси",
и выведите их номера в порядке возрастания. Наличие только одной такой пары гарантировано.

Входные данные:
файл Cow.in следующего формата:


  • Строка 1: N - число коров
  • Строки 2..N*5+1: Цифровые фотографии коров, в которых корова i изображена в строках с i*5-3 по i*5+1.

Выходные данные:
Строка, содержащая номера коров с наибольшим "коэффициентом схожести", упорядоченные по возрастанию.
карма: 1

0