1 / 10

Всероссийская олимпиада по информатике. Школьный этап.

Всероссийская олимпиада по информатике. Школьный этап. Разбор задачи №2 «Покер». 2013г. Тумайкина Ю.Н., МБОУ «СОШ с.Терновка ». Условие:.

clint
Download Presentation

Всероссийская олимпиада по информатике. Школьный этап.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Всероссийская олимпиада по информатике. Школьный этап. Разбор задачи №2 «Покер» 2013г. Тумайкина Ю.Н., МБОУ «СОШ с.Терновка»

  2. Условие: Известное казино хочет поправить свое пошатнувшееся финансовое положение, установив новую модель игровых автоматов "Покер" улучшенного дизайна. Игроку в покер необходимо собрать 5 карт таким образом, чтобы среди них было максимальное количество совпадающих (лучшая комбинация – все пять карт совпадает, а худшая – все различны). К сожалению, главный программист казино недавно неожиданно разбогател, уволился и уехал на Багамы. Без него казино не может решить, как по выпавшему набору карт определить размер выигрыша клиента. Помогите казино справиться с этой задачей. Формат входных данных Программа получает на вход 5 целых положительных чисел x1, x2, x3, x4, x5, не превосходящих 109.

  3. Условие: Формат выходных данных Программа должна вывести на экран одну из следующих строк: pokerесли все 5 чисел равны fourof a kindесли ровно 4 числа равны между собой fullhouseесли три из пяти чисел равны между собой и два оставшихся числа равны threeof a kindесли ровно три числа равны twopairsесли есть две пары равных чисел onepairесли только два числа равны alldifferentесли все числа различны Пример Входные данные 7 3 7 7 3 Выходные данные fullhouse

  4. Основные моменты: • Входные данные храним в массиве. • Организовываем два цикла, для сравнения элементов массива на равенство (оба цикла от 1 до 5). • Во внутреннем цикле: если элементы равны, то увеличиваем счетчик; • Во внешнем цикле: суммируемзначения счетчика. • В зависимости от значения суммы, применяя оператор выбора (case of), выводим результат.

  5. Рассмотрим на примере: 9 8 9 9 9 9 9 8 9 9 – элемент массива – значение счетчика 4 1 4 – значение суммы +1 +4 4 +4 +4=17

  6. Аналогично: 9 8 9 8 7 8 9 8 9 7 – элемент массива Сумма: 2+2+2+2+1=9 9 8 8 9 9 Сумма: 3+2+2+3+3=13

  7. Основные моменты: В связи с тем, что каждый элемент сравнивается с 1 по 5 включительно, значения счетчика могут быть следующими: 5 – если все пять цифр одинаковые (сумма будет 5+5+5+5+5 =25); 4 – если число повторяется 4 раза (сумма будет 4+4+4+4+1=17); 3 – если число повторяется трижды и 2 если дважды. При различных комбинациях пар и троек получаем следующие суммы: 3+3+3+2+2=13 (фуллхаус); 2+2+2+2+1=9 (две пары); 3+3+3+1+1=11(одна тройка); 2+2+1+1+1=7 (одна пара).

  8. Текст программы: program poker; var x: array [1..5] of longint; i,j,s,k:integer; begin for i:=1 to 5 do read(x[i]); s:=0; for j:=1 to 5 do begin k:=0; for i:=1 to 5 do if x[j]=x[i] then k:=k+1; s:=s+k; end; case s of 25: writeln('poker'); 17: writeln('four of a kind'); 13: writeln('full house'); 9: writeln('two pairs'); 11: writeln('three of a kind'); 7: writeln('one pair') else writeln('all different') end; end.

  9. Прогон программы по ключу:

  10. Спасибо за внимание

More Related