Для свободного пользования можем предложить несколько задач решенных учениками школы. Некоторые из них снабжены достаточно подробными пояснениями. Пока здесь немного задач, но мы планируем этот раздел сайта регулярно пополнять.
Задача 1. О плоховидящем путешественнике со странным компасом.
Некий путешественник решил пройти из пункта А в пункт В по полю, заполненному препятствиями произвольной формы. Его проблема заключается в том, что он видит только на один пиксель вперёд. И это бы ещё ничего, но у него ещё очень плохая память и все, что он может запомнить, так это немного чисел (два - три, ну, может быть четыре). Единственно, что радует, так это наличие устройства (назовём его условно компасом), которое всегда показывает направление на пункт В.
Программу смотри здесь (Паскаль)
Задача 2. Как быстро вычислить выражение представленное строкой символов.
Существует достаточно простой алгоритм. Можно из сложного выражения выделять простые, вычислять и подставлять их значения в исходную строку сложного выражения. Это плохо, так как вынуждает проводить анализ строки для каждого нового аргумента. Идея быстрого счета заключается в том, чтобы один раз провести анализ строки и на его основе создать что-то вроде программы для калькулятора, которая будет уже выполняться довольно быстро. Решение состоит из двух модулей. В одном проводится анализ строки и составляется калькуляторная программа, и во втором модуле эта программа исполняется для конкретного аргумента.
Программу смотри здесь (Паскаль)
Задача 3. Ханойская башня.
Конечно, эта задача общеизвестна. Но она не совсем элементарна, и поэтому мы разместили наше решение. Кто знает, может быть, кому-то оно покажется интересным.
Программу смотри здесь (Паскаль)
Задача 4. Игра Монетки
Есть набор столбиков монет различной высоты, расположенных на одной линии. Игроки по очереди берут себе с одного края линии столбики. Игрок не может не брать столбиков и не может взять их больше, чем взял его противник предыдущим ходом. (то есть если один взял 3 столбика, то другой вслед за ним может взять 1, 2 или 3 по своему усмотрению - а первый затем - не больше чем взял второй, и так далее). В начале игры вводится максимальное количество столбиков для взятия первым ходом. Цель - взять себе в сумме больше монет, чем противник, к моменту, когда столбики кончатся.
Задача 5. Обратная польская запись
Обратная польская запись - это способ бесскобочной записи арифметического выражения. Этим способом можно записать абсолютно любое арифметическое выражение
Программу смотри здесь (Паскаль)
Задача 6. Поиск в матрице, пути с наибольшим весом
Дана матрица заполненная случайными числами от -99 до 99. Необходимо найти путь из верхнего левого угла до правого нижнего, так, что сумма чисел в узлах составляющих путь будет максимальной. Двигаться по матрице можно только вправо и вниз.
Программу смотри здесь (Паскаль)
Задача 7. Метод минимакса на двоичном дереве
Предположим, два игрока играют в игру, такую что в каждой позиции игрок, чья очередь хода, имеет только два варианта ответа. Такую игру можно представить в виде двоичного дерева. Предположим, что игрок принимающий решение о ходе способен провести анализ на N ходов вглубь и предположим, что он в состоянии оценить конечные позиции числом тем большим чем лучше эта конечная позиция. Вопрос - какой из двух имеющихся вариантов игры ему выбрать при условии, что противник играет наилучшим образом и имеет точно такие же критерии оценки позиций.
Программу смотри здесь (С++) Программу смотри здесь (Pascal)
Задача 8. Поиск наидлиннейшего пути рубки
На доске для шашек стоит несколько черных шашек и одна белая. Как определить путь белой шашки на котором она сможет срубить наибольшее количество шашек противника
Задача 9. Соревнование по рукопашному бою
Необходимо для известного количества спортсменов - участников турнира по рукопашному бою построить график соревнований, так, чтобы в любой паре количество боёв проведённых участниками пары отличалось не более чем на 1 бой. График изобразить древовидной структурой
Программу смотри здесь (Паскаль)
Задача 10. Определение формы препятствия
На пути у одинокого путника,
идущего в глубоком тумане по экрану
монитора встречается препятствие
достаточно произвольной формы, все
стенки которого параллельны краям
монитора. Путешественник не
ориентируется в пространстве, у
него нет карты, компаса и он не
может запоминать координаты точек
в которых он был, но он знает, где у
него правая рука, а где левая.
Требуется определить форму
препятствия.
Что такое форма препятствия.
Выше было сказано, что стенки
препятствия параллельны сторонам
экрана монитора. Пронумеруем в
каком-либо порядке стороны экрана,
тогда стенка препятствия получает
номер "своей" стенки экрана
монитора. Будем называть формой
препятствия последовательность
номеров стенок полученную при
полном, последовательном обходе
препятствия. Однако нельзя
забывать, что путешественник идёт в
глубоком тумане и стенок монитора
не видит, более того, он даже не
знает о их существовании.
Программу смотри здесь (Паскаль)
Задача 11. Решение системы линейных уравнений методом Гаусса.
Думаю дополнительных пояснений к условию не нужно.
Программу смотри здесь (Паскаль)
Задача 12. Поиск наименьшего невыбранного числа
Из миллиарда чисел выбирается 10 миллионов случайным образом. Необходимо найти первое невыбранное. Проблема заключается в том, что выбранные числа хранятся в файле. Файловые операции работают очень медленно, поэтому применять алгоритмы сортировки к выбранным числам нельзя.
Программу смотри здесь (С, Паскаль)
Задача 13. Поиск пути к бензоколонке
Некий автомобилист пытается в городе найти путь к бензоколонке. Он находится в определённой точке и он располагает картой города на которой отмечена единственная бензоколонка. На улицах города, как и полагается установлены знаки соблюдать которые водитель в принципе обязан. Но наш водитель имеет возможность нарушить некоторое количество правил. Кроме того, его автомобиль имеет некоторое количество топлива, которого возможно более чем достаточно, но может быть и не очень много. Необходимо найти путь на котором водитель уложится в существующее количество топлива и минимальное количество раз нарушит правила дорожного движения. Экономить топливо не обязательно. Карта города представляет собой граф, для построения которого обязательно использовать указатели.
Программу смотри здесь (С, Паскаль)
Задача 14. Восстановление многочлена по корням
Программу смотри здесь (Паскаль, С)
Задача 15. О гвоздях и деревянной рейке
В длинную деревянную рейку вбили М гвоздей больше 2 но меньше 20. Гвозди объединяются в пары веревочками так, чтобы выполнились следующие условия:
Написать программу, которая определяет пары гвоздей, связанных веревочками, как сказано выше.
Программу смотри здесь (Паскаль, С)
Задача 16. Подсчет черных пятен на белой шкуре
Посчитать количество чёрных пятен на белой шкуре. Шкуру представить в виде двоичной матрицы. 0 - белый цвет, 1 - чёрный цвет.
Программу смотрим здесь (Паскаль, С)
Задача 17. Построение арифметического выражения
Дано целое число М. Вставить между некоторыми цифрами 1, 2, 3, 4, 5, 6, 7, 8, 9, записанными именно в таком порядке, знаки "+" или "-" так, чтобы значением получившегося выражения было это число.
Программу смотри здесь (С, Компонентный Паскаль)
Задача 18. Расстановка букв
В квадрате, состоящем из 16 клеток, расставить 4 буквы так чтобы в каждом столбце, каждой строке и каждой большой диагонали находилась только одна буква. Построить все возможные решения.
Программу смотри здесь (С, Компонентный Паскаль)
Задача 19. Рейка с гвоздями (второй вариант)
В длинную деревянную рейку вбили М гвоздей больше 2 но меньше 20. Гвозди объединяются в пары веревочками так, чтобы выполнились следующие условия:
Написать программу, которая определяет пары гвоздей, связанных веревочками, как сказано выше.
Программу смотри здесь (С, Компонентный Паскаль)
Задача 20. Расстановка ферзей
На шахматной доске расставить восемь ферзей так, чтобы ни один из них не мог срубить другого. Построить все возможные решения.
Программу
смотри здесь (С, Компонентный
Паскаль)
Задача 21. Расстановка знаков
Дано целое число М. Вставить между некоторыми цифрами 1, 2, 3, 4, 5, 6, 7, 8, 9, записанными именно в таком порядке, знаки "+" или "-" так, чтобы значением получившегося выражения было это число.
Программу смотри здесь (С, Компонентный Паскаль)