|
Игра в дурака
(Время: 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 была козырной, значить отбить карту соперника невозможно.
Разбор: Кормышов М.Д.
| |