Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль / okulov / okulov / chapter4.DOC
Скачиваний:
54
Добавлен:
10.12.2013
Размер:
2.38 Mб
Скачать

4.9. Олимпиада - 97

r97_1 Сортировка является одной из наиболее часто встречающихся задач вычислительной техники. В данной задаче сортируемые записи имеют не более трех различных значений ключа. Например, три числа 1, 2 и 3. Требуется отсортировать последовательность в порядке неубывания. Сортировка выполняется с помощью попарных перестановок элементов. При попарной перестановке, определяемой номерами позиций i и j, производится обмен местами двух элементов, находящихся в позициях i и j.

Напишите программу, которая по заданной последовательности значений ключей (их количество 1<=N<=1000) находит минимальное количество операций попарной перестановки, необходимых для того, чтобы отсортировать заданную последовательность, и определяет эту последовательность.

Пример.

9 (количество ключей) 2 2 1 3 3 3 2 3 1

4 (количество перестановок) 1 3 4 7 9 2 5 9

r97_2 Известно, что клетки шахматной доски обозначаются латинскими буквами от A до H по вертикали и цифрами от 1 до 8 по горизонтали(от А1 в левом нижнем углу до H8 в правом верхнем).

Клетка

Cтрока

A7

32

B1

16

F4

B1+C2

C2

A7+B1

E6

F4+B1

В каждой клетке содержится строка одного из трех типов: пустая строка, десятичная запись положительного числа или сумма названий двух или более клеток. Напишите программу, которая вычисляет заданную таблицу либо определяет, что это невозможно. Пример. Для приведенного примера заполнения доски (остальные клетки пустые) решение имеет вид: A7=32, B1=16, C2=48, F4=64, E6=80

Начало дерева имеет

следующий вид.

r97_3 Написать программу, которая выводит на графический экран дерево, примерное изображение которого (с пятью ветками) приведено на рисунке. Угол между парой исходящих веток равен 90 градусов. Каждая ветка (исключая ствол) имеет длину, равную 0.56 от длины ветки, из которой она растет. Высота дерева составляет 10 веток (включая ствол). Считайте, что размеры графического экрана вашего компьютера 640 точек по горизонтали и 480 точек по вертикали. В левом верхнем углу экрана расположена точка с координатами (0.0). Считайте, что в вашем языке программирования есть оператор LINE(x1,y1,x2,y2), который изображает на экране отрезок, соединяющий точки с координатами (x1,y1) и (x2,y2).

о97_1В длинную деревянную рейку вбили несколько гвоздей (2£N£20). Гвозди объединяются в пары веревочками так, чтобы выполнились следующие условия:

  • к каждому гвоздю была привязана хотя бы одна веревочка;

  • суммарная длина веревочек была бы минимально возможной.

    Написать программу, которая определяет пары гвоздей, связанных веревочками, как сказано выше.

    Входными данными являются число гвоздей и их координаты (целые числа, по модулю не превосходящие 30000, вводимые в порядке ВОЗРАСТАНИЯ значений), выходные данные - минимальная суммарная длина и пары номеров соединяемых гвоздей.

    Пример.

    Входные данные:

    5

    11 12 13 16 17

    Выходные данные:

    3

    1 2 2 3 4 5

    о97_2Заданы две символьные строки А и В, не содержащие пробелов. Требуется вычислить, сколькими способами можно получить строку В из строки А, вычеркивая некоторые символы. Например, если строки А и В имеют соответственно вид СамаринаИрина и Сара, то искомое число равно 7, для строк аааввввссс и авс, это число равно 36.

    Написать программу, находящую требуемое число способов.

    Примечание. Каждая строка содержит не более 25 символов.

    о97_3В вашем распоряжении имеется по четыре экземпляра каждого из чисел: 2, 3, 4, 6, 7, 8, 9, 10. Требуется написать программу такого размещения их в таблице 6x6, чтобы в клетках, обозначенных одинаковыми значками,находились равные числа и суммы чисел на каждой горизонтали, вертикали и обеих диагоналях равнялись заданному числуN (30<=N<=55).

+

$

#

11

@

@

#

@

11

+

#

$

11

@

+

!

#

!

$

11

^

+

^

$

Входные данные - числоN.

Выходные данные - заполненная таблица или сообщение «нет решения».

Примечание. Обратите внимание на то, что число 11 уже записано в таблице 4 раза.

о97_4В выпуклом N-угольнике провели все диагонали, никакие три из которых не пересекаются в одной точке. Требуется написать программу поиска числа частей, на которые оказался разбит N-угольник.

Входные данные: натуральное число N (3£N£30). Выходные данные - число частей в разбиении. Например. N=5. Ответ - 11.

о97_5Возьмем клетчатую доскуMxN (1<=M,N<=4). Воткнем в каждую клеточку штырек.В нашем распоряжении естьK (0<K<20) абсолютно одинаковых колечек, каждое из которых можно нанизывать на штырек,причем на один штырек можно надеть несколько колечек. Подсчитать,сколькими способами можно распределить все эти колечки по штырькам.Два распределения считаются разными,если на каком-то из штырьков находится разное количество колечек,и одинаковыми в противном случае.

Входные данные : M N K

Пример :Входные данные:2 2 2 Результат:10

о97_6На клеточном поле вдоль линий сетки и по диагоналям из центра координат (в центре клеточного поля) выкладывается связная фигура, состоящая из спичек длины 1 иÖ2. Спички длины 1 выкладываются по сторонам клеток, а длиныÖ2 - по диагоналям. Пример.

Ребенок решил сжечь фигуру. Ему разрешено поджечь ее только в одной точке, имеющей целочисленные координаты (например, в точке А нельзя, а в точках В и С можно). Известно, что время сгорания спички не зависимо от длины и равно 2 минутам, если спичка загорается с одного конца, и 1 минуте, если она загорается с двух концов одновременно или со средины.

Написать программу определения координат точки зажигания такой, что:

а) фигура сгорает за минимальное время;

б) при сгорании какая-нибудь спичка загорается одновременно с двух концов.

Входные данные: Строка не более чем из 20 заглавных латинских букв (U,E,R,F,D,G,L,H), определяющих направления спичек при выкладывании фигуры, причем одна и та же спичка может быть описана во входной строке несколько раз.

Выходные данные. Выдать номер решаемого пункта, затем: для пункта а) координаты одной из точек поджигания и время сгорания фигуры; для пункта б) координаты одной из точек поджигания или сообщение «Решения нет».

Примечание: Если возможных точек поджигания несколько - выдать одну из них.

Пример входных данных :

RELFLEUHLGDRDLGLRF

Пример выходных данных для этого теста:

Пункт а): координаты (1,0) время 9

Пункт б): координаты (0,1)

Соседние файлы в папке okulov