|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
07.01.2014, 17:22 | #1 |
Форумчанин
Регистрация: 15.12.2013
Сообщений: 414
|
Помогите разобраться с алгоритмом: определить по мишени результаты соревнований по стрельбе
Надо написать программу на Си,но я что-то вообще не знаю даже с чего начать в этом задании((
Вот мое решение Я насчитала 188 очков на мишени, а это число на 3 не делится ровно. 1 стрелок - 1+2+3+5+10+50 2 стрелок - 25+20+20+3+2+1 3 стрелок - 20+10+10+5+1+25 Один из стрелков попал в отметку "25" другого стрелка ) |
07.01.2014, 18:15 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Откуда Вы это знаете?! Я не увидел этого утверждения в условиях задачи.
может быть, в единицу дважды попали?! А алгоритм, имхо, чисто переборный. у нас есть 8 выстрелов ниже средней линии (кроме 50). Нужно взять все варианты 5 из 8. и проверить, можно ли из оставшихся чисел суммированием получить равное число очков. p.s. а как Вы получили результат? Он очень похож на правильный! Последний раз редактировалось Serge_Bliznykov; 07.01.2014 в 18:19. |
07.01.2014, 18:29 | #3 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Сфера фантастики. Кто Вам такие задачки задаёт? Наверное уроды, которые никогда на стрельбах не бывали. Или террористы, готовящие шахидок (уродство в высшей сфере своего проявлния!). Ни один, уважающий себя стрелок, не будет стрелять, в уже расстрелянную мишень. В общем, мир - свихнулся окончательно!
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
07.01.2014, 18:40 | #4 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
На прологе такие задачи решать удобно. Тем же подходом и на Си можно решить, но неудобно: http://pro-prof.com/archives/1299 (см. "задачи на установление соответствия" - тебе надо установить соответствие между стрелками и выстрелами). На плюсах еще, наверное, можно использовать тот же подход, что и в известной задаче о размене валюты.
|
07.01.2014, 19:59 | #5 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
17 выстрелов, на три не делится, хоть об стену головой. Кто-то смухлевал или выстрелил в воздух. Короче, задача решения не имеет.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
07.01.2014, 20:21 | #6 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Код:
Если нельзя вывести что в 25 попали дважды - то сумма не 71, и программа будет работать дольше. Если список в permutation как-то переупорядочить неудачно - то программа доже может работать долго, вроде бы. Тут машина пролога перемешивает список и разделяет его на 3 части, но она не учитывает что если переставить местами элементы списка [10, 10] то получится тот же список (вобщем количество проверок можно сильно сократить, но надо думать). Тут тупое решение. Цитата:
Тебе надо заполнить 2 списка (сгенерировать 12 элементов из заданного набора), третий набор получится сам. Генерировать надо без перестановок - тогда получится менее 262 144 (это очень верхняя оценка) вариантов. Если генерировать с перестановками (как делает permutation пролога) - получится меньше 11 019 960 576 вариантов (это тоже верхняя оценка). Разница очевидна. А в коде выше генерируются не 2, а все 3 списка, кроме того. Последний раз редактировалось Stilet; 07.01.2014 в 22:18. |
|
07.01.2014, 21:21 | #7 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Приняли участие три стелка. Каждый зделал по шесть выстрелов. Один, попал в пулю другого (25).
3 * 6 = 21. На мишени 17-ть попаданий. Где ещё 21-17+1 = 3 попадания? Какая рограмма? Задача не решена в условиях! Обалдели что-ли?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
07.01.2014, 21:21 | #8 |
Форумчанин
Регистрация: 15.12.2013
Сообщений: 414
|
|
07.01.2014, 21:33 | #9 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,289
|
Smitt&Wesson, 3 * 6 = 18, так что найти нужно только 1 выстрел.
Он мог промахнуться или попасть в одно из попаданий: не подходят: 188 (+0), 190 (+2), 191 (+3), 193 (+5), 208 (+20), 238 (+50) подходят: 189 (+1), 198 (+10), 213 (+25)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
Последний раз редактировалось BDA; 07.01.2014 в 21:38. |
07.01.2014, 21:39 | #10 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Цитата:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Результаты соревнований по прыжкам в длину представлены в виде матрицы 5х3 (5 спортсменов по 3 попытки ) | inKognit | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 9 | 13.01.2011 16:39 |
[Perl] плагин для проверки количества процессов для Nagios | st01en | Perl | 3 | 27.10.2010 14:37 |
Помогите разобраться с алгоритмом!!!! | kreviuz | Помощь студентам | 2 | 22.10.2009 02:09 |
Помогите разобраться с алгоритмом программы | Evgenii | Помощь студентам | 10 | 07.11.2008 16:07 |
Перенос слов по слогам (не могу разобраться с алгоритмом) | Only Love | Помощь студентам | 1 | 21.05.2007 22:43 |