Задача 1.1 (Задача 3n 1). лр1. Задача 1 (Задача 3n 1)
Скачать 0.68 Mb.
|
Задача 1.1 (Задача 3n + 1) Рассмотрим следующий алгоритм генерации последовательности чисел. Начнем с целого числа n. Если n четно, то поделим на 2. Если n нечетно, то умножим на 3 и добавим 1. Будем повторять этот процесс с новым, полученным n, пока n не станет равным 1. Например, для n = 22 будет сгенерирована следующая последовательность чисел: 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 Полагают (но это еще не доказано), что этот алгоритм сведется к n = 1 для любого целого n. По крайней мере, это предположение верно для всех целых чисел до 1 000 000. Для данного n длиной цикла n будем называть число сгенерированных чисел до и включая 1. В примере, приведенном выше, длина цикла 22 равна 16. Для двух заданных чисел i и j вы должны определить максимальную длину цикла для всех чисел между i и j, включая обе конечные точки. Входные данные Входные данные будут состоять из серии пар целых чисел i и j, одна пара чисел в строке. Все целые числа будут меньше 1 000 000 и больше 0. Решение Сначала вводим i и j с помощью объекта cin и оператора ">>". Чтобы для двух заданных чисел i и j определить максимальную длину цикла для всех чисел между i и j, включая обе конечные точки, создаем цикл. Выводим i и j и максимальную длину цикла с помощью объекта cout и оператора "<<". Результат программы Задача 2.1 (Yahtzee) В игре Yahtzee используются пять игральных костей, которые бросаются в 13 раундах. Протокол результатов содержит 13 категорий. Счет за каждый раунд может быть записан в категорию по выбору игрока, но в каждую категорию счет можно записывать только один раз. Счет в эти 13 категорий записывается следующим образом: • единицы - сумма всех выброшенных единиц; • двойки - сумма всех выброшенных двоек; • тройки - сумма всех выброшенных троек; • четверки - сумма всех выброшенных четверок; пятерки - сумма всех выброшенных пятерок; шестерки - сумма всех выброшенных шестерок; шанс - сумма чисел на всех костях; • три одинаковые - сумма чисел на всех костях, при условии, что как минимум три из них имеют одно и то же значение; • четыре одинаковые - сумма чисел на всех костях, при условии, что как минимум четыре из них имеют одно и то же значение; короткий стрит - 25 очков, при условии, что четыре кости образуют последовательность (то есть 1, 2, 3,4, или 2, 3,4, 5, или 3,4, 5, 6); • короткий стрит - 35 очков, при условии, что все кости образуют последовательность (то есть 1, 2, 3,4, 5 или 2, 3,4, 5, 6); • фулл-хаус - 40 очков, при условии, что на трех костях выпало одно и то же число и на оставшихся двух костях также выпало одно и то же число. Каждая из последних шести категорий может быть засчитана за 0 очков, если необходимые условия не выполняются. Счетом игры является сумма всех 13 категорий плюс дополнительные 35 очков, если сумма первых шести категорий 63 или больше. Ваша задача - рассчитать максимальный счет для последовательности раундов. Входные данные Каждая строка входных данных содержит пять целых чисел от 1 до 6, представляющих собой пять костей, брошенных в каждом раунде. Для каждой игры 13 таких строк, и во входных данных может быть любое количество игр. Решение Решение можно разбить на две части: во-первых, нам нужно создать функции, которые производят правильную оценку для раунда в зависимости от того, какая категория применяется к нему, а во-вторых, чтобы найти, какое сопоставление категорий с раундами будет создать наивысший балл. Вторая часть будет решаться с использованием динамического программирования и, следовательно, требует от нас определения подзадач, которые мы будем решать, чтобы решить исходную проблему. Я выбрала подзадачу как наивысший достижимый балл, учитывая, что были присвоены категории 0….k и использовались определенные раунды. Для начала создадим функции подсчета баллов для определенных категорий. Функция подсчета всех 1, 2, 3, 4, 5, 6 в раунде, в зависимости от передаваемых значений. Функция категории шанс – сумма всех цифр на всех костях. Функция подсчета 3, 4, 5 одинаковых цифр на костях за один раунд. Функция категорий короткий стрит (последовательность от 1 до 4 или от 1 до 5). Функция категории фулл-хаус - на трех костях выпало одно и то же число и на оставшихся двух костях также выпало одно и то же число. Далее необходимо получить максимального значения для каждой комбинации. Для этого используем контейнер с ключом пары Главная функция программы. Результат программы |