![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
![]()
Если элементов меньше 25, то без проблем.
|
![]() |
![]() |
![]() |
#12 |
Регистрация: 12.11.2009
Сообщений: 9
|
![]()
получается - на ограниченном множестве.. хотя бы до 30.. это вполне реализуемо
|
![]() |
![]() |
![]() |
#13 | |
Форумчанин
Регистрация: 10.10.2009
Сообщений: 680
|
![]() Цитата:
![]() Какие примерно ограничения времени? Если 25 элементов, то выполнение укладываеться в 2 секунды. Для 30 елементов думаю не трудно уложиться в минуту. При более-менее "не-деревянно-бронированом" компе - еще быстрее. Последний раз редактировалось Stilet; 18.11.2009 в 09:08. |
|
![]() |
![]() |
![]() |
#14 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
Полез в теорию. (вот тут - Сочетание — Википедия, а вот здесь online калькулятор - Нахождение числа сочетаний из n по k) так вот, согласно теории Вы правы. но всё равно, при увеличении числа на единичку, идёт УДВОЕНИЕ числа вариантов. Так что всё упирается в эффективность реализации перебора, в количество чисел в выборке, вероятности нахождения нужной суммы, ну и в мощность используемого компьютера, разумеется. Поэтому, если для 25 элементов расчёт укладывается в две секунды (кстати, если не жалко - дайте плиз исходничек, будет очень любопытно поизучать/потестировать!), то для 26 - 4 сек, для 27 - 8 сек, для 28 - 16 сек. для 29 - 32 сек. для 30 - 1 мин 04 сек., для 31 - 2 м 8 сек, для 32 - 4 м 16 сек, для 33 - 8 м 32 сек, для 34 - 17 м 04 сек... вы ещё не утомились? ![]() продолжив ряд нетрудно убедиться, что уже для 45 чисел потребуется "всего" 582 часа.. а для 50 чисел - 18641 час (это чуть больше двух лет)... |
|
![]() |
![]() |
![]() |
#15 | |
Форумчанин
Регистрация: 10.10.2009
Сообщений: 680
|
![]() Цитата:
Задача: "В волшебной стране используются монетки достоинством A1, A2,..., AM. волшебный человечек пришел в магазин и обнаружил, что у него есть ровно по две монетки каждого достоинства. Ему нужно заплатить сумму N. Напишите программу, определяющую, сможет ли он расплатиться без сдачи. Входные данные Во входном файле INPUT.TXT записано сначала число N (1 <= N <= 10^9), затем - число M (1 <= M <= 15) и далее M попарно различных чисел A1, A2,..., AM (1 <= Ai <= 10^9). Выходные данные В выходной файл OUTPUT.TXT выведите количество монет, которое придется отдать волшебному человечку, если он сможет заплатить указанную сумму без сдачи. Если решений несколько, выведите вариант, в котором волшебный человек отдаст наименьшее возможное количество монет. Если без сдачи не обойтись, то выведите одно число 0. Если же у волшебного человечка не хватит денег, чтобы заплатить указанную сумму, выведите одно число -1 (минус один). Сдесь перебор всех 3^15 вариантов в моем решении показал время 0.267 секунды. Сейчас я вижу, что мое решение даже немного неоптимально, и можно написать еще быстрее. Лучшие решения методом перебора на этой задаче показывают время меньше 0.15 секунды. (при желании получить подтверждающие ссылки - обращаемся в личку, отвечу). Вот мой АС код этой задачи (из изменений - только попытка форматирования для улучшения восприятия посторонними и удаление ненужных закоментированых кусков кода - тоже для улучшения восприятия) Код:
|
|
![]() |
![]() |
![]() |
#16 |
Регистрация: 12.11.2009
Сообщений: 9
|
![]()
это все верно что вы говорите...но хотелось получить вашу оценку..моему предложению..
я придумал перебирать суммы из сортрованных столбцов, примерно так: для 0<x<=1 и 5<x<=5.9 Код:
Последний раз редактировалось Stilet; 18.11.2009 в 09:09. |
![]() |
![]() |
![]() |
#17 | |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#18 |
Регистрация: 12.11.2009
Сообщений: 9
|
![]()
Короче....
я делаю таблицу, с заголовками: Код:
Код:
он выдает все варианты для условиня (не больше 5,9) а дальше...как убрать повторы..? чтобы каждый элемент(тоесть ячейка) был однажды искользован? From Stilet: Не знаю где ты код выделять так научился, но у нас для него есть специальная кнопка # - попрошу ей пользоваться для оформления в посте кода. Последний раз редактировалось Stilet; 18.11.2009 в 09:10. |
![]() |
![]() |
![]() |
#19 |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
![]()
[табуляция 4 символа]
Код:
|
![]() |
![]() |
![]() |
#20 |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
![]()
В 68-й строке проверяется только 8 младших бит, в некоторых случаях программа может работать неправлильно.
У меня тогда был спарвочник только по инструкциям 286-го процессора. Для оптимизации я проверял по тому же справочнику количество тактов на опкод, тогда я не знал, что для новых процов эти величины могут быть другими. Алгоритм блока __asm на псевдокоде (G - код Грея) Код:
Последний раз редактировалось ds.Dante; 18.11.2009 в 10:25. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
работа с выборкой | Inveerto | Общие вопросы Delphi | 3 | 10.04.2011 19:32 |
Вопрос с выборкой | MHz | Microsoft Office Access | 2 | 13.11.2008 23:19 |
Помогите с выборкой | VRF | Microsoft Office Excel | 5 | 06.11.2008 01:45 |
Помогите, пожалуйста, с выборкой | Chel | БД в Delphi | 24 | 05.06.2008 05:00 |