|
107 / 107 / 9
Регистрация: 02.06.2009
Сообщений: 578
|
||
Определение алгоритма оптимальной игры28.10.2009, 07:52. Показов 17120. Ответов 20
Всем привет!
PS: На всякий случай: для оптимальной игры не всегда обязательно выбирать максимальное число с краев. Например, в ситуации [3 2 5 4 ] если выбирать наибольший из краев, то будет ничья. На самом деле выиграет первый игрок, т.е. он сначала возьмет 3, чтобы второй игрок взял 4. Тогда первый берет 5 и у него в сумме получается больше. Именно из-за этого я и завис в решении (((((((((((
0
|
||
| 28.10.2009, 07:52 | |
|
Ответы с готовыми решениями:
20
Нахождение оптимальной стратегии игры Определите, для каких натуральных n Петя гарантированно выигрывает при оптимальной игре вне зависимости от игры Вовы? Определение сложности алгоритма / Pascal |
|
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
|
||
| 28.10.2009, 16:49 | ||
0
|
||
|
|
|
| 28.10.2009, 17:41 | |
|
А если идти от противного - брать то число, после которого второму игроку придётся брать меньшее?
Те. Если я возьму чисо 4 то противник явно выберет большее из 3 и 5 -> беру 3, и противнику достаётся максимум 4. Только игра уже будет называтся 'подставь товарища' =) Добавлено через 11 минут да...только я не подумал, что противник может играть по тому же алгоритму. Итого: [3 2 5 4] Player 1 = 3+5 - You win Player 2 = 2+4 - You лузер А если второй игрок будет просто максимум, то Player 1 = 3+5 - You win Player 2 = 4+2 - You лузер Опять второй лузер. =) Ого! крутой алгоритм, если: 1. Ходит первый 2. последовательность = [3 2 5 4]. На остальных не проверял - лень. Добавлено через 4 минуты ОЙ я недочитал твой пост.... тупо повторил.... Дык какой аго нужен? Что бы всегда ничья чтоли была? Добавлено через 9 минут Короче, (бессоная ночь даёт о себе знать) При таком раскладе всё зависит от первого = [3 2 5 4] игрока - если он протупит то - неичья если нет - выиграет. Ну как и в крестиках-ноликах, если в центр не поставил - то максимум будет ничья(при адекватном поведении второго плеера)
0
|
|
|
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
| 29.10.2009, 14:19 | |
|
0
|
|
|
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
|
|
| 29.10.2009, 15:42 | |
|
0
|
|
|
203 / 145 / 16
Регистрация: 13.01.2009
Сообщений: 554
|
|
| 29.10.2009, 15:50 | |
|
можно попробовать рекурсивно перебрать все возможные варианты и выбрать наилучший :/
0
|
|
|
107 / 107 / 9
Регистрация: 02.06.2009
Сообщений: 578
|
|||
| 30.10.2009, 10:43 [ТС] | |||
0
|
|||
|
8 / 8 / 0
Регистрация: 25.11.2008
Сообщений: 32
|
|
| 31.10.2009, 21:20 | |
|
не факт, что тут задача на динамическое программирование, т.к. стратегия второго игрока нам неизвестна, наверно это ближе к теории игр
0
|
|
|
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
|
||
| 01.11.2009, 14:52 | ||
|
2Random: Прочитай еще раз условие.
Там написано:
0
|
||
|
107 / 107 / 9
Регистрация: 02.06.2009
Сообщений: 578
|
|
| 01.11.2009, 16:53 [ТС] | |
|
Если поможет: То что задача на динамо - не из воздуха взято. Задача с /acmp.ru/ По обсуждениям на форуме я так понял, что нужно как бы делать акцент на первом игроке, стараться сделать так, чтобы выиграл именно он. И всё же, насчет динамы - что тут взять за элементарный случай?
0
|
|
|
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
|
|||
| 01.11.2009, 19:01 | |||
Каждый игрок старается выиграть ! Но исходная ситуация может быть такая, что при любом ходе первого игрока все равно выйграет второй !
0
|
|||
|
107 / 107 / 9
Регистрация: 02.06.2009
Сообщений: 578
|
|||||||
| 01.11.2009, 20:57 [ТС] | |||||||
|
Задача:
0
|
|||||||
|
8 / 8 / 0
Регистрация: 25.11.2008
Сообщений: 32
|
|
| 02.11.2009, 01:12 | |
|
0
|
|
|
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
| 02.11.2009, 19:38 | |
|
1
|
|
|
107 / 107 / 9
Регистрация: 02.06.2009
Сообщений: 578
|
||
| 02.11.2009, 21:18 [ТС] | ||
0
|
||
|
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
| 02.11.2009, 22:29 | |
Сообщение было отмечено как решение
Решение
Берем матрицу состояний a[n+1][n+1].
Рассмотрим элемент a[i][j]. В данном случае i - это сколько чисел сняли слева в оригинальной посл-ти. j - сколько сняли справа. Начальное состояние - это a[0][0] - то есть ничего не сняли. Конечное состояние a[i][j], где i+j==n. В конечом состоянии мы сняли все числа и ходов больше нет. Кроме этого состояние содержит: 1) sum[0] - сумма чисел набранная 0-ым игроком 2) sum[1] - сумма чисел набранная 1-ым игроком Какой игрок ходит из данного состояния a[i][j] однозначно определяется по i,j Из состояния a[0][0] ходит 0-ой игрок. Из состояния a[1][0] ходит 1-ый игрок. Из состояния a[0][1] ходит 1-ый игрок. Кроме этого удобно в каждое состояние записать наилучший вариант хода: best_var. Очевидно что из каждого состояния a[i][j] мы можем снять либо слева число, тогда мы попадем в a[i+1][j] - это будет вариант хода best_var == 0 либо мы снимем число справа - тогда мы попадем в a[i][j+1], это будет best_var == 1. Начальное положение. После снятия последнего числа мы будем в состоянии a[i][j], где i+j==n. Нужно заполнить все такие состояния. Очередной ход. Перебираем назад. Мы двигаемся по побочным диагоналям матрицы. for ( level= n-1; level>=0; level -- ) { // тут перебираем всем a[i][j], где i+j==level } Заполняем часть матрицы от побочной диагонали до левого верхнего угла. Кто выиграл. Обратим внимание на самое начальное состояние - a[0][0]. Если в этом состоянии sum[0] > sum[1], то значит выиграл 0-ой игрок. Если sum[0] < sum[1], то значит выиграл 1-ый игрок. Ну и остался последний вариант - если суммы равны, значит ничья.
3
|
|
|
107 / 107 / 9
Регистрация: 02.06.2009
Сообщений: 578
|
|
| 03.11.2009, 09:07 [ТС] | |
|
Спасибо большое! Щас пойду кодить... :-)
0
|
|
|
asnow
|
|
| 09.02.2010, 19:22 | |
|
to odip:
Не могли бы вы показать конечную матрицу состояний для чисел 2 3 5 4 ? |
|
|
121 / 109 / 29
Регистрация: 18.12.2010
Сообщений: 378
|
|||
| 18.06.2013, 23:13 | |||
|
Добавлено через 39 секунд
0
|
|||
|
168 / 90 / 80
Регистрация: 07.10.2012
Сообщений: 145
|
||||||
| 21.06.2013, 21:24 | ||||||
2
|
||||||
| 21.06.2013, 21:24 | |
|
Помогаю со студенческими работами здесь
20
Определение времени работы алгоритма О символика (определение временной сложности алгоритма) Определение временной сложности алгоритма (О символика) часть алгоритма игры в уголки Определение числа операций на основе описания алгоритма Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|