![]() |
![]() |
![]() |
|
Подскажите алгоритм Ø |
☑ | ||
---|---|---|---|---|
0
xeex
13.01.06
✎
09:52
|
Дан числовой массив из N элементов,
дано итоговое число Х. Как составить алгоритм, определяющий суммой каких элементов массива является итоговое число? |
|||
1
rio1c77
13.01.06
✎
10:07
|
Вариантов составления элементов скорее всего море
думать неохота много, но я бы посмотрел в сторону 1) сортировки массива 2) составления вспомогательного массива всевозможных частичных сумм элементов, меньших X После этого что-то типа перебора с использованием второго массива |
|||
2
Пим Сибирский
13.01.06
✎
10:08
|
На вскидку:
Алгоритм рекурсивный. Складываеш элементы: 1+2,1+2+3,1+2+3,...,1+2+3+...+N, потом 1+3, 1+3+4, 1+3+4+5, ... , 1+3+4+5+...+N ... ... ... 1+N |
|||
3
Пим Сибирский
13.01.06
✎
10:11
|
2 не подойдет. Вижу косяк. Но что-то в этом духе. Думай сам.
|
|||
4
2Green
13.01.06
✎
10:13
|
какой тут алгоритм?
Х = min(N) + (N - min(N)); если второе слогаемое в массиве не содержится, пытаемся его составить из элементов массива (всех или оставшихся - не понятно). если так и не подбёрём, то можно взять первым следующий элемент и т.д.... |
|||
5
Пим Сибирский
13.01.06
✎
10:18
|
Полный перебор всевозможных сумм и проверка на соответствие с данной суммой. Кстати, данная сумма может оказаться и не способной быть составлена из данного массива. Гы.
|
|||
6
xeex
13.01.06
✎
13:07
|
Обязательное условие: итоговая сумма может быть составлена из элементов массива
|
|||
7
xeex
13.01.06
✎
13:11
|
Обязательное условие: итоговая сумма может быть составлена из элементов массива
|
|||
8
NS
13.01.06
✎
13:13
|
http://forum.mista.ru/topic.php?id=129178§ion=math
|
|||
9
бутерброд с красной
13.01.06
✎
13:14
|
а где ОФФ???
|
|||
10
xeex
13.01.06
✎
13:20
|
Приношу извинения,
ОФФ |
|||
11
NS
13.01.06
✎
13:22
|
Функция Рюкзак(а[],Сумма,количество,знач нач=0)
Если Сумма=0 Тогда возврат 0; // нашли точное соответствие ИначеЕсли Сумма<0 Тогда возврат 1; // перебор КонецЕсли; Если нач=количество Тогда возврат 1; // пробежали до конца КонецЕсли; нач=нач+1; Если Рюкзак(а,Сумма-а[нач],количество,нач)=0 Тогда сообщить(а[нач]); возврат 0; Иначеесли Рюкзак(а,Сумма,количество,нач)=0 Тогда возврат 0; КонецЕсли; возврат 1; КонецФункции Процедура Сформировать() перем а[4]; а[1]=5; а[2]=7; а[3]=9; а[4]=10; Сумма=22; КоличествоЭлементов=4; Рюкзак(а,Сумма,КоличествоЭлементов); КонецПроцедуры |
|||
12
BlinOFF
13.01.06
✎
14:10
|
Если еще актуально - пиши в аську (33534118).. недавно такой алгоритм применял..
|
|||
13
NS
13.01.06
✎
14:11
|
(12) И он лучше, чем код в (11)?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |