![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Swit |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 27.9.2005 Репутация: нет Всего: нет |
Игрок кот. берет последние конфеты, съедает все свои конфеты, а проигравший свои конфеты возвращает обратно в коробку
входные данные: количество конфет N (1<=N<=100) максимальное кол-во конфет кот. может взять за один ход каждый игрок M (1<=M<=100, M<=N) выходные данные: В выходной файл следует вывести единственное число - максимальное кол-во конфет, которое может съесть игрок который начал достовать конфеты первым. т.е. смысл такой. Я ввожу значения общего кол-ва конфет к примеру 13 и по две конфеты на рыло. в итоге у первого игрока который начал брать первым и вытащил последнюю конфету в желудке оказывается 7 конфет. Но как организовать это программно при вводе различных значений ведь первый игрок может последние конфеты и не забрать и в итоге получает 0. к примеру значения 12 и 3 в итоге второй забирает последние 3 конфеты а первый остается нисчем. Вобщем подскажите методы проверки или иные способы. |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
проверки чего? чтобы при 3-х доступных конфетах и 2-х разрешенных нельзя было забрать больше, чем разрешено?
тогда так: if ( hochy_zabrat > mozno_zabrat ) hochy_zabrat = mozno_zabrat; -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Swit |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 27.9.2005 Репутация: нет Всего: нет |
_hunter На всякий случай приведу саму задачу.
Двум братьям Саньку и Вовану принесли коробку с конфетами. Чтобы поделить конфеты между собой они придумали игру, суть которой сводится к следующему. Игроки поочередно берут себе из коробки некоторое (ненулевое) количество конфет. Это кол-во не должно превышать некоторого предельного числа. Игрок, кот. берет последние конфеты, съедает все свои конфеты, а проигравший свои конф. возвращает обратно в коробку. После этого игра продолжается и первым "ходит" игрок, оставшийся голодным после предыдущего раунда. Игра продолжается до тех пор, пока в коробке не останется ни одной конфеты . Цель игры -съесть как можно больше конфет. Моя задача определить какое максимальное кол-во конфет может оказаться в животе у Санька, если он начинает первым и оба брата придерживаются оптимальной для себя стратегии. Входные данные и выходные описаны выше. Пример как должно быть при вводе общего 5 и максимального 2: input.txt output.txt 5 2 3 Добавлено @ 14:48 тройка немного сместилась короче она под output.txt |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
т.е. ты хочеш чтобы тебе программу написали? тогда ты не в тот раздел зашел -- нужно в раздел помощи...
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Swit |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 27.9.2005 Репутация: нет Всего: нет |
_hunter Вот блин ругатся хочется. Хотел в P/S написать что я не прошу решения но не написал и получил от тебя эти слова "ты хочеш чтобы тебе программу написали? тогда ты не в тот раздел зашел -- нужно в раздел помощи"
Уверяю тебя мне твое решение не нужно я и сам в состоянии это сделать. Просто я хочу понять сам алгоритм как моя прога дожна работать. |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
раздели процесс на ходы и на игры. я, например, так и не понял в каком случае игрок считается проигравшим и кто будет последним брать. тот, кто не первым?
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Swit |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 27.9.2005 Репутация: нет Всего: нет |
Из вышеописанного условия задачи мне представляется это в таком виде:
Первым всегда будет брать конфеты Санек. Вводим значения (общее кол-во конфет в коробке - 10) и ( по скольку можно брать, по 2) 1) итак из этих 10 первым берет 2 Санек остается 8; 2) далее из этих 8 две берет Вован остается 6; 3) опять берет Саня от этих 6 остается 4; 4) берет Вован от 4 остается 2; 5) и последние две конфеты забирает Саня значит он жрет все свои конфеты которые насабирал, т.е. в output.txt будет записано значение 6. Или такой пример: общее кол-во - 15; можно взять - 4; 1) опять берет Саня 15-4=11; 2) Вова 11-4=7; 3) Саня 7-4=3; 4) и последние 3 забирает Вован в итоге в выходной файл output.txt будет записано значение 0 т.к. по условию Саня должен положить конфеты обратно в коробку т.к. он вытащил конфеты не последним. Но примеров может быть большое кол-во так как в условии оговорено что Начальное кол-во конфет в коробке можно задать N (1<=N<=100) а максимальное кол-во конфет кот. можно взять M (1<=M<=100, M<=N) Ты можешь спросить почему это Вован забрал последние 3 конфеты если по правилу брать можно только по 4. Опять же в условии это не оговарено, так что я это понял так: если остаток в коробке < чем положено забирать, то забирает тот чья очередь. Еще ты конечно можешь сказать или подумать конечно что это не задача а какае-то х...ня. СОГЛАСЕН. Не я ее придумал. Моя проблема в том чтобы ее решить. |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
простейший вариант -- использовать рекурсию
пишеш функцию, которая принимает число конфет, сколько берем, кто берет и вызываеш ее в цикле от 0 до сколько_можно_брать и третьим пареметром передаеш 1 в функции отнимаеш от общего числа переданное ( и эту разницу передаеш дальше ) опять в цикле вызываеш сам себя и передаеш уже -1 ( т.е. просто в функции третий параметр множиш на -1 ) и так далее... пока доступных конфет не станет 0. после этого возвращаеш третий параметр и по ниму судиш кто выиграл -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Swit |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 27.9.2005 Репутация: нет Всего: нет |
Понятно, буду пробовать, спасибо за совет!
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |