![]() |
|
|
![]()
|
|
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: нет Всего: 18 |
Првет Всем!
Проблема в том, что этот вопрос я уже задавал, скачивал, форматировал... и вот пришел опять. Есть массив порядковых чисел, но расположенных по псевдо-случайным индексам. Нужно превратить всю эту муть сохранить в кратком виде, например числе, а потом опять восстановить как было. Если непонятно, то спрашивайте, а сейчас время поджимает. |
|||
|
||||
| Dexter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1562 Регистрация: 2.7.2002 Где: Москва, Бирюлево Репутация: нет Всего: 4 |
Не понятно особенно здесь:
-------------------- The only thing you really know about me is... ...that's all you'll ever know |
|||
|
||||
| dargaard |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 450 Регистрация: 7.5.2004 Репутация: нет Всего: 25 |
Драсте...
Просто идея к слову есть массив чисел [1, 2, 3] рассмотрим все возможные перестановки и каждой перестановке назначим номер [1, 2, 3] = 1 [1, 3, 2] = 2 [2, 1, 3] = 3 [2, 3, 1] = 4 [3, 1, 2] = 5 [3, 2, 1] = 6 Следовательно зная просто длину псевдо-случайного массива можно легко определить его номер (пример: если наш массив был [3, 1, 2] то его номер 5 - 5ая перестановка массива [1, 2, 3]) очень медленный алгоритм будет таков Сжатие: строишь из изначального порядкового массива все возможные (мат. перестановка) и сверяешь с исходным как нашел записываешь номер массива, длинну и мин. элемент Восстановление: сперва по мин элементу и длинне стоишь порядковый массив ну а потом перемешиваешь (используя мат. перестановку) столько раз каков был номер ------------------------- Все это хорошо для небольших массивов так как при N элементах надо перебрать N! вариантов к примеру уже для N=20 вариантов будет 2432902008176640000 В принципе все равно места заимет меньше чем хранить 20 элементов, но скорость... так что придется как нить оптимизировать алгоритм. Это сообщение отредактировал(а) dargaard - 11.5.2004, 02:06 -------------------- Ты должна сделать добро из зла потому что его больше не из чего сделать. Р.П.Уоррен |
|||
|
||||
| Гость_Eugene |
|
|||
|
Unregistered |
Hello, ALL !
Не подойдёт этот вариант, не подойдёт ! Сосчитай кол-во цифр в числе кол-ва перестановок. Память для его хранения == количеству "сжимаемой" инф-ции. Соотв-нно никакого сжатия нет, увы. Sorry, если огорчил Удачи ! |
|||
|
||||
| dargaard |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 450 Регистрация: 7.5.2004 Репутация: нет Всего: 25 |
А не обязательно же по одной цифре хранить
2432902008176640000 можно хранить в 64 битах (2^64=18446744073709551616) Хранить 20 элементов при этом заимет как мин (20*8 = 160 битов, а как 1 баита не станет хватать так и то больше) Правда чем дальше тем хуже Ну чтож будем думать дальше -------------------- Ты должна сделать добро из зла потому что его больше не из чего сделать. Р.П.Уоррен |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
что-то непонятно, что имеется в виду под "скачивал, форматировал..." требуется другой ответ (ну, может, тот не подошел) или цсловия задачи изменились? -------------------- qqq |
|||
|
||||
| Fixin |
|
||||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: нет Всего: 18 |
Привет! Опять инета небыло. То решение было рабочим(не проверял, времени не нашлось), но я с ним не разобрался: просто сохранил на жёсте, а потом форматнул диск. А найти на форуме теперь решение не могу. Помню только, что там было про умножение числа на индекс, но точно не помню. |
||||
|
|||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 4 Всего: 360 |
Fixin,
Заходишь в свой "профиль" и выбираешь: " Найти все сообщения этого пользователя " Там находишь ссылку на тему. http://forum.vingrad.ru/index.php?act=ST&f...ndpost&p=113751 PS: Вот одно из преимуществ регистрации |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |