|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Eugene Anuchin 2:5070/96.2 24 Jul 2002 00:12:05 To : Dmitriy Gerasimenko Subject : Перебор чисел -------------------------------------------------------------------------------- 23 Июл 02 11:22, Dmitriy Gerasimenko wrote to Eugene Anuchin: >> DG> Мой алгоритм похож на электросчётчик, или на спидометр в >> DG> автомобиле если угодно. Соответсвенно, по моёй формуле количество >> DG> перестановок твоего числа "0123456789" = 10^10 >> EA > А какой тогда здесь вообще алгоритм?! >> EA > Просто пробегаем все значения от 0 до 10^10-1 DG> А кто вообще говорил что это должны быть обязательно числа ???........ DG> Hикто вроде не говорил! Всё немного сложнее и интереснее чем кажется. Это уж точно. "Моим числом" ты сам назвал то, что я везде определял как строку произвольных символов. DG> А для символов: "KADY", "WOUCJKB", "QWERTY" организовать цикл т.е. DG> "пробежать" тоже не получится! Почему? Представь себе четверичную систему (и)счисления, где ноль обозначается символом "K", единица="A", двойка ="D", тройка ="Y". Затем "ПРОБЕГИСЬ" от 0 до 4^4-1 и будет тебе (KKKK-YYYY). Остальные примеры аналогично. DG> Hу а коли так! То цикл тут не поможет, DG> и применять следует ПЕРЕСТАHОВКУ! Hу а если применить следует DG> ПЕРЕСТАHОВКУ, то это ни что иное как алгоритм перестановки. Золотые слова. EA>> Для строки '0123456789' выдает честных 3628800 EA>> перестановок менее чем за секунду (ессно без вывода на консоль) >> EA> Как это нет?!!! Печать идет на стандартное устройство вывода (по DG> Тебя не понять, сначала ты пишешь что вывода на консоль нет, потом DG> ,что есть!? Определись! Определяюсь: Для генерации 3628800 перестановок за <1сек. нужно отключить вывод на консоль. Вроде понятно объяснил. DG> Далее... хорошо, вот то, что ты имеешь в виду, но не имею в виду я: DG> это БЕЗ рекурсии, но есть и С рекурсией.... [Прога пропущена] DG> Результат вывода для числа: [1234] DG> 1 : 2134 [...] DG> 12 : 1234 DG> Hа сим заканчиваю... алгоритмы разные нужны, алгоритмы разные важны. Вот когда для четырех элементов у тебя получится 4!=1х2х3х4=24 перестановки, тогда можно и заканчивать. Вот скомпиленый пример. В коммандной строке набрать: recur abcd или: recur privet>result.txt а также: recur 0123456789 =============================================================== section 1 of uuencode 5.10 of file recur.com by R.E.M. begin 644 recur.com MNH(`B=,"7_['!PHD2RG3=BBT"<TAB/6(W_[+@/L!=@53Z//_6XC9B=>)UD:* -!?.DJO[/=`3-(>OBP^OB ` end sum -r/size 54673/110 section (from "begin" to "end") sum -r/size 47730/58 entire input file =============================================================== ... Life - Sucks! --- Hе подохнешь - пpивыкнешь, не пpивыкнешь - подохнешь! (М. Жванецкий) * Origin: `Wireless' Евгений ael @irk. ru (2:5070/96.2) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/27953d3d7f16.html, оценка из 5, голосов 10
|