Пожалуйста,помогите!, деление предметов на две группы,суммы которых максимально близки |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Пожалуйста,помогите!, деление предметов на две группы,суммы которых максимально близки |
Kate |
Сообщение
#1
|
Группа: Пользователи Сообщений: 5 Пол: Женский Репутация: 0 |
Помогите, пожалуйста, с программой!сама в паскале практически не разбираюсь, поэтому самой как то все сложно!
Задание:Разработать программу, которая делит N предметов с различными весами на две группы так, чтобы общие веса двух групп были максимально близки. Программа должна иметь развитый интерфейс пользователя. (искала в ин-те,в книгах разных о паскале ничего не нашла) |
klem4 |
Сообщение
#2
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Как вариант :
Сортируешь массив, далее берешь наибольший элемент кладешь в первую группу, далее кладешь оставшиеся элементы во вторую группу, пока ее суммарный вес не будет отличаться от веса первой группы нанекую дельту, далее начинаешь проделывать тоже самое с первой группой ... -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Гость |
Сообщение
#3
|
Гость |
Спасибо, конечно огромное, но это итак логично, вопрос в другом, как это написать в программу?(я писать программы не умею, а логика то есть)javascript:emoticon(':)', 'smid_1')
|
Lapp |
Сообщение
#4
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Спасибо, конечно огромное, но это итак логично, вопрос в другом, как это написать в программу?(я писать программы не умею, а логика то есть)javascript:emoticon(':)', 'smid_1') Kate, если есть логика - давай ее сюда. Лично мне задача не кажется совсем тривиальной (я имею в виду именно логику). А вот прогу написать по готовому алгритму - это действительно пустяк.. Так что давай, опиши здесь свои наработки, а мы поможем с программированием этого. 2 klem4: мне кажется, без полного перебора тут не обойтись.. А это потребует ох, немалого времени! надо покумекать над оптимизацией.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Kate |
Сообщение
#5
|
Группа: Пользователи Сообщений: 5 Пол: Женский Репутация: 0 |
Не очень понимаю...
сама я ничего не понимаю, что я думала приблизительно описал klem4(первый вариант). В ин-те нашла какой то бред, сама ничего в этом не понимаю: (может поможет) "Алгоритмически": Создаем 2 переменные и массив N элементов: 1-я переменная - общий вес первой группы 2-я переменная - общий вес второй группы Каждый элемент массива (байт) - признак текущего веса предмета - скажем - 0 - он еще не распределен, 1-он уже переложен в 1-ю группу, 2-он уже переложен во 2-ю группу 1. находим максимальный элемент массива, у которого признак - 0 2. Если 1-я переменная (общий вес) больше 2-й, то 2-я переменная увеличиваеться на Ai (массу предмета), выставляеться признак 2 в массиве признаков иначе 1-я увеличиваеться и выставляется признак 1 3. Проверяем массив признаков на наличие нулей - если есть, идем на пункт 1 4. Из массива признаков определяем, что куда переложили. |
Текстовая версия | 20.04.2024 16:57 |