|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.07.2009, 11:33 | #1 |
Регистрация: 28.07.2009
Сообщений: 4
|
Объсните решение!Вырубка деревьев.Паскаль.Задача перебор!
Задача Паскаль вырубка деревьев
Король Флатландии решил вырубить некоторые деревья, растущие перед его дворцом. Деревья перед дворцом короля посажены в ряд, всего там растет N деревьев, расстояния между соседними деревьями одинаковы. После вырубки перед дворцом должно остаться M деревьев, и расстояния между соседними деревьями должны быть одинаковыми. Помогите королю выяснить, сколько существует способов вырубки деревьев. Требуется написать программу, которая по заданным числам N и M определит, сколько существует способов вырубки некоторых из N деревьев так, чтобы после вырубки осталось M деревьев и соседние деревья находились на равном расстоянии друг от друга. Входные данные Входной файл INPUT.TXT содержит два целых числа M и N (0 Ј M, N Ј 1000). Выходные данные В выходном файле OUTPUT.TXT должно содержаться одно число - искомое количество способов.Пример INPUT.TXT: OUTPUT.TXT для примера: 5 3 4 Ограничение времени: 1 сек на тест РЕШЕНИЕ Код:
неясно что мы обозначаем переменной д что такое н-1 див м-1 про инк и далее вообще не понятно что там делается короче говоря нужен разбор этой задачи..объясните ничего не понимаю смысл сам решения не понимаю...откуда берётся этот н-1 див м-1 и что это такое..почему мы увеличиваем с именно на n-(m-1)* д ХЭЛППП!!!:confu sed: Последний раз редактировалось Stilet; 28.07.2009 в 11:54. |
28.07.2009, 13:06 | #2 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Else - ложная ветвь условия. d - это счетчик шагов в цикле. То есть d принимает значение с каждым шагом от 1 до (n-1) div (m-1)
(n-1) и (m-1) скорее всего от того, что это того что нумерация начинается от нуля (хотя здесь может быть и другой прикол) div - деление нацело. Нельзя использовать (n-1) / (m-1) поскольку результат получится дробным (точнее может получиться), а это не есть хорошо поскольку d может принимать только целые значения (в свою очередь это связано с тем, что это переменная цикла - а она всегда целое число, без всяких запятых). Инк - это операция сложения к s c каждым шагом прибавляется n-(m-1)*d. Почему именно это выражение? Наверно это задано условием задачи: там растет N деревьев, расстояния между соседними деревьями одинаковы. После вырубки перед дворцом должно остаться M деревьев, и расстояния между соседними деревьями должны быть одинаковыми. Всего деревьев N каждый раз рубим М (здесь каждый раз и есть d) Вообще это наглядный образец отвратительного почерка. Отсутствие комментариев и куча вложений на одной строке может запутать кого угодно. В общем здесь показано как оформлять не надо.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика Последний раз редактировалось Utkin; 28.07.2009 в 13:21. |
28.07.2009, 13:56 | #3 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
(n-1) и (m-1) это количество промежутков в начале и в конце, их всегда на 1 меньше чем точек.
|
28.07.2009, 20:07 | #4 | |
Регистрация: 28.07.2009
Сообщений: 4
|
???????????????
Цитата:
А разве мы рубим не Н-М ?? |
|
28.07.2009, 21:12 | #5 | |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
Цитата:
Может так понятнее будет. В принципе количество вариантов считается как сумма членов арифметической прогрессии, у которой первый член равен 1, а количество членов и шаг зависят от N и M, как это написано в приведенном варианте, просто решение из цикла переходит в линейный алгоритм. Пример без файла, просто так тестировать быстрее. Код:
Последний раз редактировалось Stilet; 29.07.2009 в 09:55. |
|
29.07.2009, 02:54 | #6 |
Регистрация: 28.07.2009
Сообщений: 4
|
Краткие комментарии по решению задач и системе тестов
Задача A. Вырубка деревьев Зафиксируем расстояние между деревьями после вырубки. Если оно равно d, то возможно n – d(m – 1) – m + 1 способов вырубить деревья. Суммируя по всем d, получаем ответ. вот такую вот инфу нашла.. получается d*(m-1) это количество промежутков после вырубки равных определённому расстоянию д а что такое тогда н-м+1?? Последний раз редактировалось Stilet; 29.07.2009 в 09:56. |
29.07.2009, 07:42 | #7 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
Вы так никогда не разберетесь с задачей, поскольку итоговые формулы порлучаются в результате преобразований и на первый взгляд не имеют смысла. Пока Вы не разберетесь с алгоритмом на бумаге сами, вряд ли возможно его Вам объяснить заочно, ибо это и просто и сложно одновременно. Это надо ПОНЯТЬ. Кстати, если будете использовать мой код не забудьте вставить проверки из Вашего кода, я просто написал как цикл заменить на линейный алгоритм.
Код:
|
29.07.2009, 19:47 | #8 |
Регистрация: 28.07.2009
Сообщений: 4
|
Re
я разобрала на бумаге при н=7 и м от 1 до 7 и из этого поняла
а меня теперь очень интересует в результате каких преобразований получается вот эта итоговая формула s=s+(n-(m-1)*d) |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Объсните принцип работы программы | Ge0rGE | Помощь студентам | 1 | 10.06.2009 21:50 |
Задача (наверное на перебор) | Witaliy | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 18.01.2009 18:11 |
решение Задачек в Паскаль | ЛидочкаНенаглядки | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 10.01.2009 01:07 |
Задача на большой перебор | МаксимNEWProgramm | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 06.04.2008 18:15 |