Re^2: Ладно.
- From
- Mike Girkin (2:5055/177.22)
- To
- Soldatenkov Mitea ()
- Date
- 2003-03-06T19:45:06Z
- Area
- RU.ALGORITHMS
Да пребудет с тобой тьма, Soldatenkov !
06 Мар 03 00:13, Soldatenkov Mitea закинул письмецо для Aleksey Zelenin:
MG>>> Засем здесь pекуpсия? Самая задача под двоичный пеpебоp. Если у
MG>>> тебя количество данных умещается в ln(MaxInt,2), тогда пpоще
MG>>> делать числами.
AZ>> Это как?
SM> Если я правильно понял, то читать надо так: если максимальное
SM> количество бит в целом числе не превышает n (здесь и далее n - число
SM> чисел в твоем наборе, массиве - ну вобщем думаю понятно о чем я:))...
Абсолютно точно. Если допустим у тебя число всех предметов 32 - можно сделать
численно, т.е. число типа long(ANSI C) вмещает 32 бита. Больше - нужно думать.
MG>>> Если нет пpидется подумать еще над длинной аpифметикой.
AZ>> А это как?
SM> Опять-же, если я правильно понял, то речь идет о такой ситуации, когда
SM> по той, или иной причине удобней задействовать нестандартный формат
SM> чисел. Например, 256 байтовое целое.
И опять все верно. Но опять же численной арифметики может не хватить. Допустим
у тебя будет 1000, а то и 10000 предметов. Тогда классической длинной
арифметикой. Т.е. ручками, загоняем двоичное число в массив, допустим char (чтоб
меньше занимал), хотя можно конечно еще извратиться c числовым представлением, и
начинаем к нему прибавлять каждый раз по единице. Конечно будет долго, и
несколько гемморойно, но работать будет практически для ьюбого количества
предметов.
SM> На асме, насколько я помню, есть команды полуфабрикаты
SM> для сложения/вычитания между такими числами. С этими полуфабрикатами,
SM> реализация сложения/вычитания предельно проста. С умножением, делением
SM> и извлечением корней мароки будет больше, но тоже не проблемма.
И это тоже можно, но только умножения и деления в улсловиях данной задачи нэ
трэба.
MG>>> А количество ячеек... Ну во пеpвых, если памяти не жалко можно
MG>>> под максимум отвести, во втоpых можно не хpанить эти сочетания -
MG>>> зная его номеp, его можно найти. Ну уж если совсем пpипеpло,
MG>>> тогда смотpи в стоpону динамического выделения памяти.
AZ>> А зачем динамическое выдиление памяти? Мне пpосто нужен
AZ>> алгоpитм,
SM> А кто тебя знает, может у тебя памяти в притык, а охота где-нить
SM> сохранить все найденные комбинации.
В парвом письме AZ писал, что надо их хранить, вот я и предложил способы их
хранения.
Тьма за нас. Mike .
... legem brevem esse oportet - закон должен быть кратким
--- GoldED+/W32 1.1.5-030118
* Origin: (2:5055/177.22)