|
0 / 0 / 0
Регистрация: 10.11.2018
Сообщений: 23
|
||||||
Эффективность и рекурсия09.01.2019, 22:47. Показов 1689. Ответов 12
Метки нет (Все метки)
Добрый вечер. Вопрос на тему: Эффективность и рекурсия
Амир и Тамар играют в игру. В ряду находятся положительные числа. Каждый игрок по очереди выбирает числа и только с края ряда и кладет к себе в кассу. Оба игрока знают значения каждого из чисел. Количество чисел четное, т.е. у каждого игрока будет одинаковое количество выборов Например такой ряд: 15 25 18 ………….. 22 30 18 Каждый игрок по очереди выбирает числа и только с краю и кладет к себе в кассу. После K выборов каждым игроком, заканчиваются числа в ряду, и считают сумму набранных чисел и выигрывает тот, у кого сумма больше. Либо ничья, если суммы одинаковые. Амир берет первым. Он хочет выиграть, либо закончить ничьей. Нужно найти стратегию для Амира, которая это обеспечит. Амир может заранее посчитать числа и сумму чисел. Предположим, одномерный массив arr который включает этот ряд. Надо написать статический метод с именем win, который будет гарантировать что Амир не проиграет. Метод принимает массив чисел в качестве параметра и отображает выбор игроков в каждом выборе. В конце процесса должно быть напечатано, какая общая сумма будет у Амира и общая сумма у Тамар. В методе нужно предположить, что когда выбирает Тамар, то она всегда будет выбирать самое большое из двух чисел по краям. Подпись метода: public static void win (int [] arr) Например, если список чисел в массиве 15 19 21 13 14 30 23 16 То вывод для игры будет: Amir took 16 Tamar took 23 Amir took 30 Tamar took 15 Amir took 19 Tamar took 21 Amir took 13 Tamar took 14 Final Score: Amir total 78 Tamar total 73 Похоже, что правильное решение – это дать Амиру посчитать сумму чисел в ряду на четных и на нечетных местах. И скажем, если он посчитал, что сумма на нечетных местах больше и так как он начинает первым, то он будет выбирать только числа, находящиеся на нечетных местах, даже несмотря на то, что Тамар выбирает всегда максимальное число с краев, то ей все равно всегда будут доставаться четные места, которые в итоге в сумме дадут меньше, чем у Амира. И так же с четными местами. То, что я сделала - неправильно:
0
|
||||||
| 09.01.2019, 22:47 | |
|
Ответы с готовыми решениями:
12
Рекурсия. Рекурсия с мемоизацией. (полная версия в печатном варианте, работа со словами и строками) эффективность адурелки |
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
||
| 10.01.2019, 09:41 | ||
|
...
Добавлено через 15 минут
0
|
||
|
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
|
||
| 10.01.2019, 11:15 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 10.11.2018
Сообщений: 23
|
|
| 10.01.2019, 11:32 [ТС] | |
|
По условию количество чисел в ряду чётное. Возьмём пример похожий на ваш: 1,1,10000,1,1,2. Амир считает сумму и понимает что на нечётных местах сумма больше. Поэтому берет первую единицу, Тамар берет 2, Амир берет предпоследнюю единицу, Тамар берет одну из оставшихся единиц, Амир берет 10000. Таким образом его стратегия: брать всегда то число которое стоит на четном или нечётном месте, в зависимости от того сумма которых больше, которую он посчитал до начала игры.
Добавлено через 9 минут неважно какой ряд и какие числа в нем. Речь идет о стратегии. Преимущество у того, кто берет первым и посчитал сумму чисел на четных и на нечетных местах перед началом игры
0
|
|
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
| 10.01.2019, 12:08 | |
|
Alinari, можно взять либо первый элемент, либо последний, если я беру первый элемент, то нечетные элементы становятся четными, как нам поможет вычисление твоей суммы?
0
|
|
|
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
|
||||||
| 10.01.2019, 12:24 | ||||||
|
Alinari, Непонятная у вас стратегия. Амир может взять 2 и получить еще больше. При уменьшении всего ряда в последный момент может поменятся выиграшный (четный/не четный), и во вторых сумма накопленых ошибок даст о себе знать.
Я бы взял тупым перебором, так будет наверняка. Например что-то типа такого
0
|
||||||
|
0 / 0 / 0
Регистрация: 10.11.2018
Сообщений: 23
|
|
| 10.01.2019, 12:30 [ТС] | |
|
мой вариант базируется на четных или нечетных местах изначально, то есть до начала игры.
Возьмем такой ряд и пронумеруем под ним четные и нечетные места. 16 25 15 30 18 18 1 2 3 4 5 6 Амир посчитал, что сумма больше на четных местах. Поэтому он теперь всегда будет брать те числа которые изначально были пронумерованы четными местами.
0
|
|
|
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
|
|
| 10.01.2019, 12:54 | |
|
Alinari, В принципе ваша стратегия позволяет Амир как минимум не проиграть.
Очков будет не самое большое возможное значение, но не проиграете.
0
|
|
|
0 / 0 / 0
Регистрация: 10.11.2018
Сообщений: 23
|
|
| 10.01.2019, 13:16 [ТС] | |
|
именно. Не поиграть. как это осуществить в Java?
0
|
|
|
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
|
|
| 10.01.2019, 13:29 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 10.11.2018
Сообщений: 23
|
|
| 10.01.2019, 14:34 [ТС] | |
|
ViktorFX, написать код согласно условию
0
|
|
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|||||||||||
| 10.01.2019, 18:49 | |||||||||||
Сообщение было отмечено Alinari как решение
Решение
Alinari, дабу
Не по теме: Какой-то тернарник у меня подозрительный...
1
|
|||||||||||
|
0 / 0 / 0
Регистрация: 10.11.2018
Сообщений: 23
|
|
| 10.01.2019, 19:38 [ТС] | |
|
iSmokeJC, спасибо, это то, что нужно!
0
|
|
| 10.01.2019, 19:38 | |
|
Помогаю со студенческими работами здесь
13
Эффективность перевозок эффективность сравнения Эффективность рекламы Эффективность ссылок эффективность алгоритма Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|