Показать сообщение отдельно
Старый 07.06.2005, 14:24     # 2
TRiPLE
Junior Member
 
Аватар для TRiPLE
 
Регистрация: 10.10.2003
Адрес: Москва
Сообщения: 136

TRiPLE Реально крут(а)TRiPLE Реально крут(а)TRiPLE Реально крут(а)TRiPLE Реально крут(а)
Можно попробовать суммировать от большей гири к меньшей, сравнивая результат сложения. Если больше, чем надо - отбрасываем гирю и переходим к меньшей. Если суммарная масса оставшихся гирь меньше нехватающего на чаше с гирями веса, то самую маленькую гирю стоит поставить на чашу с грузом и пробовать все заново (уже без этой гири).
Так делать до того момента, пока сумма масс гири и предмета не станет больше массы всех остальных гирь вместе взятых, либо пока не дойдешь до самой тяжелой гири. Если опять ничего не совпало, то ставишь вторую с конца гирю на постоянное место жительства к предмету на чашу, а подбираешь уже вес с поочередным добавлением второй гири к предмету (опять с конца). А если есть время, то я бы посмотрел всякие оптимизации, поскольку это уж совсем топорно. Можно считать четность какую-нибудь, применить методы оптимизированного поиска (когда массив делится пополам, потом ещё пополам и т.д., т.е. не ставить к предмету сразу меньшую гирю, а пробовать с середины), или оценивать недостающий вес при подборе гири для чаши с предметом и ставить его исходя из остатков меньших и больших гирь.
Хорошая задачка, жалко времени нету думать особо. Книжки посмотри, может есть где-нибудь что-то похожее. Должно быть.

Да, забыл. Перед тем как начать новый проход, надо пробовать отбрасывать последнюю подошедшую по весу гирю и ставить вместо неё следующую, т.е. делать откат на шаг назад и пропускать его - так пока масса оставшихся гирь опять таки не станет меньше недостающей массы для уравновешивания.
__________________
"Самое великое достижение Америки - каждый должен голосовать".
- Джордж Буш Мл.(Остин, 08.12.00).
TRiPLE вне форума