Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 

Игра в дурака

(Время: 1 сек. Память: 16 Мб Сложность: 36%)

В данной задаче требовалось реализовать простейшую стратегию хода: последовательно отбивать карты соперника минимально возможной из имеющихся.

Пронумеруем все номиналы карт от 0 до 8. Для этого заведем массив, индексами которого будут символы. Элементам с индексами ’6’, ’7’, ’8’, ’9’, ’T’, ’J’, ’Q’, ’K’, ’A’ присвоим числа от 0 до 8 соответственно. Аналогично поступим с мастями карт.

Для хранения карт отбивающего игрока заведем двумерный массив 4 на 9, в котором числом 1 будем отмечать наличие соответствующей карты. Тогда, чтобы отбить очередную карту соперника NM (где N – номер номинала, а M – номер масти), необходимо в строке M, начиная со столбца N найти ближайшую единицу. Если такая единица существует, это значит что имеется карта той же масти, но большего достоинства, значит ею можно отбить карту соперника, поэтому 1 заменяем на 0 (этой картой уже отбились и повторно ее использовать нельзя). Если единица справа не нашлась и масть M не является козырной, то необходимо найти минимального козыря, для этого найдем самую левую единицу в строке с козырным номером. Также заменив ее на 0. Если же такая единица не будет найдена или масть M была козырной, значить отбить карту соперника невозможно.

Разбор: Кормышов М.Д.

[Обсуждение] [Все попытки] [Задача]


Красноярский краевой Дворец пионеров, (c)2006 - 2025, ИНН 246305493507, E-mail: admin@acmp.ru



https://regi778.ru/propiska_spb_lo.