Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 17.02.2012
Сообщений: 4

помогите определить по какому алгоритму решить задачу

17.02.2012, 18:51. Показов 967. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
суть задачи состоит в том,что:
есть 4 поля размерами 120га,95га,110га,140га..мне требуется посадить 230га ячменя..по какому алгоритму решить эту задачу,чтобы ячмень занимал как можно меньше гектаров..соответственно все числа могут меняться,Я привела лишь пример

Добавлено через 27 минут
в данном примере это будет 140+95=235..то есть всего 5га лишних засадим ячменем
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.02.2012, 18:51
Ответы с готовыми решениями:

Решить задачу слияния 2 списков по какому-либо условию
4.Решить задачу слияния 2 списков по какому-либо условию. Например, к концу очереди добавить список, добавить список к началу стэка или из...

Помогите решить задачу(Гражданин открыл счет в банке. Определить прирост и сумму вклада через определенное время)
Помогите решить задачи через цикл do _ while: 2) Гражданин 1 марта открыл счет в банке вложив 1000 руб. Через каждый месяц размер...

По какому алгоритму можно определить, что один треугольник находится внутри другого?
Заданы два треугольника координатами своих углов. По какому алгоритму можно определить, что один треугольник находится внутри другого?

5
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
17.02.2012, 23:43
Задача на ДП.
Цитата Сообщение от Aleksandra90 Посмотреть сообщение
соответственно все числа могут меняться
Количество полей тоже может меняться? Какие предельно допустимые значения могут быть у входных данных?
Могу написать код на с/с++. Могу просто алгоритм.
1
0 / 0 / 0
Регистрация: 17.02.2012
Сообщений: 4
18.02.2012, 10:28  [ТС]
да,количество полей можно выбирать,думаю 10-20 можно ограничиться смело,также можно задавать размер каждого поля(среднее поле 100га)..у каждой культуры есть своя прибыльность(есть прибыльные,есть не совем),также есть правила по которым засаживаются поля(каждая культура не может возвращаться N лет на одно поле,и после i-ой културы не может быть j-ая)..это что касается рассадки культур по полям..на выходе я хочу получить такую рассадку,при которой бы прибыльность была максимальна(пока в голове есть только вариант перебора,т.е. смотрим все поля на какие можно самую дорогую посадить,сажаем..потом дешевле и тд,но как то это не круто,хотелось бы что-нить универсальней) и плюс к этому должна быть возможность вводить ограничения,т.е. я хочу засадить обязательно 300га ячменя,150 кукурузы и при этом получить макс прибыль

программу хочу реализовать в делфи,поэтому думаю,что пока будет достаточно толлько алгоритма как оптимально засадить..идей нет особенно по той части,как N гектар оптимально разложить по нескольким полям,чтобы излишков было минимум,если поможете,то буду очень признательна)
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
18.02.2012, 11:54
Цитата Сообщение от Aleksandra90 Посмотреть сообщение
идей нет особенно по той части,как N гектар оптимально разложить по нескольким полям,чтобы излишков было минимум,если поможете,то буду очень признательна)
По этой части я Вам сейчас алгоритм объясню.
Но условие задачи вижу немного изменилось.
Цитата Сообщение от Aleksandra90 Посмотреть сообщение
пока в голове есть только вариант перебора,т.е. смотрим все поля на какие можно самую дорогую посадить,сажаем..потом дешевле и тд,но как то это не круто,хотелось бы что-нить универсальней
Тут Вы правы - это не самый лучший способ. Может быть вариант, когда самую дорогую культуру можно посадить на поля, при этом минимальный недосев может быть к примеру 50 га. А если выбрать немного дешевое культуру, то недосева может не быть вовсе или намного меньше 50 га, что в итоге даст более высокую прибыль.
Ладно, итак та часть которую обещал. Я на Вашем примере покажу:
Цитата Сообщение от Aleksandra90 Посмотреть сообщение
есть 4 поля размерами 120га,95га,110га,140га..мне требуется посадить 230га ячменя..
берем массив размером 120+95+110+140=465
1 2 3 4 5 6 7 ..... 465 <-индексы массива
0 0 0 0 0 0 0 ..... 0 <-начальные значения массива
Затем такой алгоритм, перебираем числа 120, 95, 110, 140 (порядок перебора не важен) и с каждым числом делаем следующее:
- проходим по массиву от элемента с индексом 465 до элемента с индексом 1, если встречаем элемент массива равный 1 (пусть индекс этого элемента равен i), то элемент с индексом i+(очередное выбранное число) делаем равным единице. По окончании прохода массива, элемент с индексом равным очередному выбранному числу делаем равным 1.

Покажу вручную что будет получаться.
Берем очередное число 120. Проходим по массиву, элементов равных 1 нет. По окончании прохода элемент с индексом 120 равен 1.
1 2 3 4 5 6 7 .. 120 ... 465 <-индексы массива
0 0 0 0 0 0 0 .. 1 ... 0 <-значения массива
Далее берем число 95. Идем по масиву, встречаем элемент с индексом 120, делаем элемент с индексом 120+95 тоже равным 1. По окончании прохода делаем элемент с индеком 95 равным 1.
1 2 3 4 5 6 7 .. 95 .. 120 .. 215 .. 465 <-индексы массива
0 0 0 0 0 0 0 .. 1 .. 1 .. 1 .. 0 <-значения массива
Далее берем число 110, идем по массиву, встречаем 215 (делаем элемент 215+110 равным 1), встречаем 120 (делаем элемент 120+110 равным 1), встречаем 95 (делаем элемент 95+110 равным 1). По окончании прохода элемент с индексом 110 тоже равен 1.
1 2 3 4 5 6 7 .. 95 .. 110 .. 120 .. 205 .. 215 .. 230 .. 325 .. 465 <-индексы массива
0 0 0 0 0 0 0 .. 1 .. 1 .. 1 .. 1 .. 1 .. 1 .. 1 .. 0 <-значения массива
Далее берем последнее число 140. В итоге массив получится такой:
1 2 .. 95 .. 110 .. 120 .. 140 .. 205 .. 215 .. 230 .. 235 .. 260 .. 325 .. 345 .. 355 .. 370.. 465 <-индексы массива
0 0 .. 1 .. 1 .. 1 .. 1 .. 1 .. 1 .. 1 .. 1 .. 1 .. 1 .. 1 .. 1 .. 1 .. 1 <-значения массива
Кстати получается, что:
Цитата Сообщение от Aleksandra90 Посмотреть сообщение
в данном примере это будет 140+95=235..то есть всего 5га лишних засадим ячменем
неправильно: можно набрать и ровно 230: 110+120
По окончании такого перебора всех чисел выбираем минимальное значение массива, равное 1 (от нужного значения и больше). В данном случае это 230. (Немного отвлекусь - все значения массива равные 1 - это все возможные варианты которые можно набрать)
Теперь осталось вычислить поля которыми можно набрать эту сумму.
Изначально имеем число 230.
Пока это число не станет равным 0, делаем так:
Перебираем все значения полей и если значение массива с индексом (наше число) - (значение очередного поля) равно 1, то значит это поле наше - отнимаем от (нашего числа) (значение этого поля) и продолжаем дальше.

Вот что получится: имеем 230. 230-120=110 (элемент массива с индексом 110 равен 1, поэтому это поле (120га) наше). 230-120=110 (теперь наше число 110).
Имеем 110. Перебирая числа найдем, что 110-110=0 (это тоже наше поле).
2
0 / 0 / 0
Регистрация: 17.02.2012
Сообщений: 4
18.02.2012, 19:16  [ТС]
спасибо большое!!!сейчас буду опробывать,если что спрошу еще..еще раз огромное спасибо Вам)
0
0 / 0 / 0
Регистрация: 17.02.2012
Сообщений: 4
21.02.2012, 18:35  [ТС]
здравствуйте..подскажите пожалуйста какие мы еще методы используем при решении этой задачи..чтобы можно было их описать в математической части,пожалуйста!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.02.2012, 18:35
Помогаю со студенческими работами здесь

Помогите решить задачу
Привет всем! Я учусь программировать на Дельфи и мне очень нравится :) Помогите, пожалуйста, решить такую задачу...у меня не...

помогите решить задачу
Написати програму в C++ яку водиться: Дата/Місяць/Рік і виводитись має Місяць/День/Рік але вводитись має число а виводитись...

ОУ. Помогите решить задачу
Помогите решить задачу

ПОМОГИТЕ РЕШИТЬ ЗАДАЧУ

Помогите решить задачу на C++
Построить все слова длины n&gt;0 в алфавите скобок &quot;(&quot; и &quot;)&quot;, представляющие правильные скобочные записи


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru